Условие по ID категории
Задача вывести строку с текстом на странице товара по условию принадлежности к определенной категории .
Например для категории с ID равным 19 вставляю код в product.cart.html
{if $category.id=19} ..........текст........................................ {/if}
и текст прописывается для всех товаров во всех категориях...т.е. условие не работает.
Что должно быть вместо $category.id ?
8 ответов
На странице товара доступен массив всех категорий, в которых находится товар. Он разбирается так
Можете ещё добавить проверку на наличие $c.status, чтобы перебирать только видимые категории, но это уже частный случай и как правило, когда нет участия товара в скрытых категориях, то оно не нужно.
Не срабатывает на product.cart.html ((
Если прописать просто
то выводит
Если просто задать вывод без условий
то получаем все туже картинку
почему то цикл не работает ...
Да и 795 это ID самой нижней подкатегории в которой и находится товар
На скриншоте все прекрасно видно как всё работает и выводит ID категорий в которых находится товар. Вы просто сами запутались на ровном месте.
Нет никаких нижних и верхних категорий, в которых находится товар. Он либо находится в категории, либо нет. Дерево категорий, которое вы себе представляете, к этому отношения не имеет, несмотря на тот, факт, что визуально существуют вложенности категорий друг в друга и их можно представить в виде древовидной структуры. В массиве категорий товара $product.categories всё это представлено плоско. Там только категории, в которых товар находится явно и только они являются категориями для товара, а не потому что существует какая-то иерархия категорий, поэтому товар автоматически лежит во всех вышестоящих категориях. Это лишь проекция товара вверх по дереву согласно настройке категории-родителя.
Вот сами прикиньте. Если товар лежит в 795 категории, а вы делаете проверку на его наличие в 19-й категории, то чего вы ожидаете увидеть в результате такого проверочного условия?
Есс-но ничего у вас и не выведет на экран, потому что условие не выполняется.
Хотя бы сделайте внутри foreach вот такую конструкцию, чтобы в случае несовпадения хоть что-то показывало. А дальше уже по месту адаптируйте как угодно.
Код рабочий. На ваш первоначальный вопрос о
данное решение отвечает на 100%. Если вы задавали один вопрос, но имели ввиду что-то другое, то увы, мысли не читаю.
Кстати, может быть, вам будут интересны идеи из вот этой темы https://support.webasyst.ru/fo...
Там есть некоторые переклички с попыткой отслеживания иерархической схемы, а в частности родительской категории, если она есть. Т.е. можно проверять ID по родителю при некоторой доработке кода, а не по "нижней", как вы выразились, категории товара.
Да , спасибо! Я не конкретизировал ситуацию, думая что если товар находится в "нижней" категории то есть какой-то массив со всеми ID его родительских категорий, и задав любую из них мы получим результат.
Т.е. если товар лежит в своей категории то никак нельзя отследить номера всех родительских категорий ?
Мысль была в том что например есть Категории с подкатегориями :
Бытовая техника (ID1) - - Мойки(ID19) - Зигмунд(ID75)
и чтобы указав в условии ID любой из этих категорий , мы могли применять его ко всем товарам которые лежат в этой категории и в подкатегориях ниже.
Указав ID=2 мы применяем его ко всем товарам в категории "Мойки, смесители"(ID2) и ко всем товарам нижестоящих категорий.
Вот это я имел ввиду)
И неужели нет наработок ? Применять условие по категориям - это же очень востребованно, поидее )
Поизучаю смежную тему указанную вами, спасибо!
А если задачу решать с помощью списка -
товары из нужных категорий внести в список и проверять на странице товара его по условию
по идее должно работать , осталось только название переменной списка найти и правильный синтаксис для проверки условия.
Подскажите пжл , кто знает