Отображение блока только в конкретной категории товаров
Приветствую.
Как сделать так, чтобы блок отображался только для товаров конкретной категории?
Попробовал такую функцию:
{if $product.categories.id = 155} {$wa->block("product_area_facts_folt")}{/if}
Но блок в этом случае отображается вообще для всех товаров
6 ответов
Возможно, вы ошиблись в операторе сравнения: он должен быть, как минимум, ==, а не =. И проверьте, содержится ли в переменной $product.categories.id нужное вам значение.
Здесь я точно ошибся. Спасибо
По виду у меня теперь
{if $product.categories.id == 155} {$wa->block("product_area_facts_folt")}{/if}
Но не отображается вообще.
Перед этим у меня идет функция:
Разобрался.
Сделал так:
Просто проговорите этот код словами.
- Если товар НЕ в 155 и НЕ в 152 категориях, то показывается блок product_area_facts
- Если товар в 155 или 152 категориях, то никакие блоки не показываются.
- Но если товар в 155 категории, то показывается блок product_area_facts_folt
Вам не кажется это немного странным?
Теперь о том как именно работает код по итогу, несмотря на написание.
- Если товар в 152 категории, то никакие блоки не выводить.
- Если товар в 155 категории, то выводить блок product_area_facts_folt.
- Во всех остальных случаях выводить блок product_area_facts.
Короче говоря, надо написать более логично, убрав $c.id == 155 ||. Эти игры с hidden=1 и сразу же hidden=2 при 155 категории даже в таком простом примере весь мозг "переворачивают".
Чтобы блок отображался только для товаров конкретной категории, нужно использовать функцию if_category(). Эта функция принимает два аргумента: ID категории и значение, которое должно быть равно ID категории товара.
Я бы сделал так {if_category $product.categories.id 155} {$wa->block("product_area_facts_folt")}{/if_category}