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

オーダー時に生地の変更・追加をしたいと思い、オプションでやるには膨大な数になる事と、

種類がすごく多いのでカテゴリ分岐をしたいため生地変更用のカテゴリと商品詳細を用意する事にしたのですが

全商品表示ページに表示されるとオーダーアイテムと生地単体が入り混じってとても見辛いことになってしまうので

商品一覧の全商品のみ生地のカテゴリを非表示になるようにしたい。

最初はtwigのみで実装できないかと試行錯誤。

フォーラムの「 EC-CUBE4でカテゴリ一覧の出力時に特定カテゴリのみ除外したい」

という質問の答えで、

—–

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

{% endif %}

—–

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

最終的に下記のコミュニティの質問を参考に実装することができました。

■ FindByで、NOT条件を指定したい|ECオープンプラットフォーム

EC-CUBE 開発コミュニティ - フォーラム
独自性の高いECサイトが無料で手に入る、日本発ECオープンプラットフォーム「EC-CUBE」の開発コミュニティサイト

「src/Eccube/Repository/ProductRepository.php」ファイルの該当部分を下記に書き換え

—–

例:「カテゴリID:1」のみ出力しないようにしたい場合

$qb
->innerJoin(‘p.ProductCategories’, ‘pct’)
->innerJoin(‘pct.Category’, ‘c’)
->andWhere($qb->expr()->notIn(‘pct.Category’, ‘:Categories’))
->setParameter(‘Categories’, array(1));
$categoryJoin = true;

—–

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

コメント

タイトルとURLをコピーしました