EC-CUBE4 メーカー管理プラグインをもっと便利にするカスタム方法

EC-CUBE4 メーカー管理プラグインをもっと便利にするカスタム方法

EC-CUBEには「メーカー管理プラグイン」という、商品ごとにメーカを設定することができるプラグインがあります。

非常に着眼点は良く便利なのですが、設定したメーカー情報は商品詳細ページに表示されるだけとなっております。
なので、せっかく設定したメーカーの情報を活用できるようにカスタマイズする方法をご紹介します。

商品一覧ページでメーカー情報を表示させる

では、さっそく設定したメーカー情報を商品の一覧ページでも表示させるようにしてみましょう。
コンテンツ管理>ページ管理から商品一覧ページを選択して編集します。
メーカー情報を表示させたい商品情報の所に以下のコードを追加するだけです。


{#メーカープラグイン表示対応#}
{% if Product.Maker %}
        {% if Product.maker_url is not empty %}
                

{{ 'maker.admin.maker'|trans }}: <a href="{{ Product.maker_url }}" target="_blank">{{ Product.Maker.name }}</a>

{% else %}

{{ 'maker.admin.maker'|trans }}: {{ Product.Maker.name }}

{% endif %} {% endif %}

これだけで、商品一覧ページに設定したメーカー名と、URLを設定していればリンクとして表示することができます。
ちなみに私は、商品名の下に表示するようにしました。

{{ Product.name }}

のすぐ下に先ほどのコードを追加することで対応可能です。

商品一覧ページでメーカー情報を元に並び替え対応

上記で、商品一覧ページにメーカー情報を表示させる方法を紹介しました。
せっかくなので、商品一覧ページでメーカー名を元に並び替え表示にも対応させてみたいと思います。

まずは、並び替えの選択肢を増やします。
設定 > システム設定 > マスターデータ管理 から「mtb_product_list_order_by」を選択して。「メーカー順」のようにお好きな名前を付けて登録してください。このときIDを覚えておいてください。
特にカスタムしていなければ4になるかと思います。

次にファイルを一つ直接修正する必要があります。
対象ファイルはコチラです。「src/Eccube/Repository/ProductRepository.php」
ファイル内の関数「getQueryBuilderBySearchData」内の最後のif else文に以下を追加します。197行目あたりになるかと思います。


// 店舗順対応
} elseif (!empty($searchData['orderby']) && $searchData['orderby']->getId() == 4) {
        // 在庫切れ商品非表示の設定が有効時対応
        // @see https://github.com/EC-CUBE/ec-cube/issues/1998
        if ($this->getEntityManager()->getFilters()->isEnabled('option_nostock_hidden') == true) {
                $qb->innerJoin('p.ProductClasses', 'pc');
                $qb->andWhere('pc.visible = true');
        }

        // $qb->innerJoin('p.Maker', 'pm');    // メーカー設定が無ければ非表示
        $qb->leftJoin('p.Maker', 'pm');     // メーカー設定が無くても表示
            
        $qb->orderBy('pm.sort_no', 'DESC'); // 管理画面ソート順
        // $qb->orderBy('pm.name', 'ASC');     // 名前順
            
        $qb->addOrderBy('p.id', 'DESC');
}

ここで2つポイントになるところがあります。
まずは11,12行目です。これはメーカー名が存在しないものを表示させるか、させないか設定が可能です。お好みに合わせてどちらかを片方をコメントアウト等して下さい。
もうひとつが、14,15行目です。なにを元に並び替えにするか設定できます。
メーカー名順に表示させるも、メーカー設定画面のソート順で表示させることもできます。

どうですか?商品一覧画面で、メーカー設定した項目で並び替えできたら利便性があがりますよね!

メーカーという表示を「店舗」等に変更する

メーカー管理プラグインとだけあって、商品画面で表示されるのは「メーカー: 〇〇〇」のようになっていますね。
しかし、飲食店のECサイトだったらメーカーではなく店舗名とかで設定できたら、さらに使用の幅が広がると思いませんか?

変更には、ファイルを直接編集する必要がありますが簡単です!
app/Plugin/Maker4/Resource/local/ 配下にある、「messages.ja.yaml」「validators.ja.yaml」のふたつのファイル内のメーカーという文言を好きな文言に変更するだけです!

※変更後には、キャッシュが残っていると変更が反映されないのでキャッシュ削除を行ってください。

以上、いかがだったでしょうか?
EC-CUBEのプラグインの中でも人気のあるメーカー管理プラグインをさらに利便性を高くする方法でした!