[ECCUBE4]全商品表示で特定のカテゴリを非表示

5月 11, 2023

オーダー時に生地の変更・追加をしたいと思い、オプションでやるには膨大な数になる事と、
種類がすごく多いのでカテゴリ分岐をしたいため生地変更用のカテゴリと商品詳細を用意する事にしたのですが
全商品表示ページに表示されるとオーダーアイテムと生地単体が入り混じってとても見辛いことになってしまうので
商品一覧の全商品のみ生地のカテゴリを非表示になるようにしたい。

最初はtwigのみで実装できないかと試行錯誤。
フォーラムの「 EC-CUBE4でカテゴリ一覧の出力時に特定カテゴリのみ除外したい」
という質問の答えで、

-----
{% if Category.id is not same as(除外したいカテゴリID) %}
{% endif %}
-----

というものがあったのですがどうやってもnot same as が効かず。

最終的に下記のコミュニティの質問を参考に実装することができました。
■ FindByで、NOT条件を指定したい|ECオープンプラットフォーム
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&topic_id=18109&forum=14

「src/Eccube/Repository/ProductRepository.php」ファイルの該当部分を下記に書き換え
-----
例:「カテゴリID:1」のみ出力しないようにしたい場合
{% set Categories = repository('Eccube\\Entity\\Category').getList() %}
{% macro tree(Category) %}
  {% from _self import tree %}
  <li>{{ Category.name }}</li>
{% endmacro %}
{% from _self import tree %}
{% for Category in Categories %}
{% if Category.id is not same as(1) %}
  <ul>
    {{ tree(Category) }}
  </ul>
{% endif %}
{% endfor %}
-----

これで無事全商品ページでの特定カテゴリの非表示が実装できました。

You Might Also Like

0 コメント

Popular Posts

About Me

Flickr Images