[eccube3]商品一覧でカテゴリ別条件分岐

欲しい情報を調べてもぴったんこのがほぼ無いとういやつ。

結論

要はこうする。

{% if app.request.query.get('category_id') == 1 %}
{# カテゴリIDが1なら表示 #}

{% endif %}

「{‘category_id’: 1}」の数字を自サイトのカテゴリIDに合ったものと変更すればOK。

解説的なもの

Product/list.twigで商品一覧を表示するわけですよね。
カテゴリで絞り込むとURLが「/products/list?category_id=1&name=」みたいな感じになりますよね。「category_id」を取得して、指定したのと同じかどうかが判定できればいいわけよね。

応用してこういうのも仕込める。

{% if app.request.query.get('name') == 'aaa' %}
{# aaaってフリーワード検索してたら表示 #}

{% endif %}

radioとかselectとかで文言を絞らない限りは隠しコンテンツになる確率がめっちゃ高い。

商品詳細ページでカテゴリ別条件分岐

{# カテゴリID「10」判定 #}
{% set hasCategory10 = false %}
{% for ProductCategory in Product.ProductCategories %}
	{% if ProductCategory.Category.id == 10 %}
		{% set hasCategory10 = true %}
	{% endif %}
{% endfor %}

{% if hasCategory10 %}
{# カテゴリ10だったら表示 #}

{% endif %}

商品に設定したカテゴリの中に指定のものがあったらコンテンツを表示できる。
idを抽出しまくってifを重ねたら特定の子要素を持ってたら表示しない、みたいな感じのも作れる。

これはネットで拾ってきたやつの使い回しだけど、先に変数を宣言して設定しておけば後は変数をifで囲むだけで済むからとても賢いやり方だなぁと思った。

試してみたけど、複数箇所に同条件のifを仕込むのであれば都度forを回してると変なことになるんで、だったら何も考えずに変数でやるやつに統一した方が良いよねという感じ。

コメント

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