• 締切済み

EC-CUBE4 子カテゴリーについて

EC-CUBE4.2でECサイトを構築中です。 任意の子カテゴリー一覧を表示していますが、その子カテゴリーに商品がない場合、子カテゴリー名を非表示にする方法をアドバイスいただけないでしょうか? 何卒、宜しくお願いいたします。 {% set Category = repository('Eccube\\Entity\\Category').find(11) %} {% set cate_childs = Category.getDescendants %} {% if cate_childs %} {% set h = Category.hierarchy + 1 %} <ul> {% for cate in cate_childs %} {% if h == cate.hierarchy %} <li><a href="{{ url('product_list') }}?category_id={{ cate.id }}">{{ cate.name }}</a></li> {% endif %} {% endfor %} </ul> {% endif %}

みんなの回答

回答No.1

EC-CUBE4.2でECサイトを構築中の際、子カテゴリーに商品がない場合に子カテゴリー名を非表示にする方法についてアドバイスいたします。 まず、提供されたコードから、現在の子カテゴリーリストを表示するロジックがお分かりかと思います。 子カテゴリーに商品があるかどうかを判定するために、`{% if cate_childs %}`のif文の中に下記の条件文を追加してください。 ```php {% if cate_childs and cate_childs|length > 0 %} ``` 上記の条件によって、子カテゴリーが存在してかつ子カテゴリーの数が0より大きい場合に処理が実行されます。 次に、商品が存在しない場合に非表示にしたいカテゴリー名を判定し、該当する場合はリストに追加しないロジックを追加します。 ```php {% for cate in cate_childs %} {% if h == cate.hierarchy %} {% set products = repository('Eccube\\Entity\\Product').findByCategory(cate) %} {% if products|length > 0 %} <li><a href="{{ url('product_list') }}?category_id={{ cate.id }}">{{ cate.name }}</a></li> {% endif %} {% endif %} {% endfor %} ``` 上記の変更を加えたコードでは、カテゴリーのループ内で各カテゴリーに関連する商品数を判定し、0より大きい場合にのみリストに追加されるようになります。 これで、子カテゴリーに商品がない場合に子カテゴリー名を非表示にすることができます。 ご参考までに、上記の修正後のコードを以下に示します。 ```php {% set Category = repository('Eccube\\Entity\\Category').find(11) %} {% set cate_childs = Category.getDescendants %} {% if cate_childs and cate_childs|length > 0 %} {% set h = Category.hierarchy + 1 %} <ul> {% for cate in cate_childs %} {% if h == cate.hierarchy %} {% set products = repository('Eccube\\Entity\\Product').findByCategory(cate) %} {% if products|length > 0 %} <li><a href="{{ url('product_list') }}?category_id={{ cate.id }}">{{ cate.name }}</a></li> {% endif %} {% endif %} {% endfor %} </ul> {% endif %} ``` ご質問内容への回答となります。追加で質問や不明点がありましたらお気軽にお問い合わせください。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/

関連するQ&A