この記事は、カタログページのソートエクステンションを作る方法(1)の続きです。
前回の記事はこちら「エクステンションを作る準備〜Pluginを作成

di.xmlを作成

di.xmlに書けるタグはいろいろありますが、(参考 Magento 2 - What case I use di.xml and How to use di.xml for module?)
今回はPluginタグを使います。

Veriteworks/SortOrder/etc/di.xml

  • typeタグに、拡張元メソッドのあるファイルを追加
  • pluginタグのtype属性には、自分が作成した拡張メソッドのあるファイルを追加
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Catalog\Block\Product\ProductList\Toolbar">
        <plugin name="custom_custom_block_toolbar" type="Veriteworks\SortOrder\Plugin\Catalog\Block\Product\ProductList\Toolbar" />
    </type>

    <type name="Magento\Catalog\Model\Config">
        <plugin name="custom_catalog_model_config" type="Veriteworks\SortOrder\Plugin\Catalog\Model\Config" />
    </type>
</config>

di.xmlの作成が終わりました。それでは、setup:upgradeコマンドとcache:cleanコマンドを実行してカタログページを確認してみましょう。

ソート方法が今回指定した新着順・値段昇順・値段降順に変わっているのがわかり、それぞれちゃんと機能することがわかります。
しかし、表記が英語のままとなっているので、日本語に変えたいと思います。

和訳ファイルを作成

  • __('ABC')このような記述をすることで、ABCが翻訳できるようになる
  • 今回はConfig.phpの文字列を翻訳する

Veriteworks/SortOrder/i18n/ja_JP.csv

"New to Old","新着順"
"Low to High","安い順"
"High to Low","高い順"

キャッシュを消して確認してみます。

日本語表記になりました。正常にソートされています。

まとめ

本記事では、Pluginを使ったソートエクステンションを作成しました。Magentoの機能を拡張したいときは、Pluginを使って拡張ができます。
ソースコードはこちら https://github.com/Veriteworks/SortOrder