Как написать условие if на множество ресурсов и родителей на Fenom
Всех приветствую, есть поле артикул, которое не нужно выводить у ряда категорий, на данный момент условие реализовано следующим образом:
{set $key = ["31","32" ,"32" ,"33" ,"34"]}
{if $_modx->resource.id in list $key}
<div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}То есть главный родитель 31, а остальные — его подкаталоги. Но если подкаталоги добавляются, что бы не лезть в шаблон, можно ли как то сделать что бы у всех подкаталогов родителя 31 скрывался артикул? Комментарии: 31
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
{$_modx->resource.id} и подобные этому вызовы обращаются к полям текущего ресурса. Поэтому в чанке будет так:
И кстати:
1) Не смешивайте стандартный синтаксис и fenom. Раз пишите в fenom, пишите все в нем. Т.е. не , а 2) По-моему в первом условии должно быть не , а
И так:
Все равно выводит артикул
Во вторых, покажите вызов сниппета, которым выводятся карточки, код чанка карточки.
Ни так:
Ни так:
это запрет вывода артикула на странице товара.
А исключить дочерние категории в списке — просто добавьте эти каталоги с минусом:
но лучше вместо нуля вписать начальный каталог.
ID=31 — это самая верхняя категория которая в себе содержит десятки подкатегорий разной вложенности, и у товаров всех этих категорий, которые постоянно добавляются и убавляются, не нужно выводить артикул. Что бы не лезть постоянно в шаблон что бы прописать ID новой добавленной категории.
И тогда это все меняет дело.
нужно брать в зубы лом:
getChildIds
Получать родителей в массив и сравнивать.
те что-то такое
Я образно показал какую функцию можно взять и что можно параметры засунуть.
вы, думаю, сможете указать верные. Шаблон подставьте какой у этих ресурсов, ну и глубину выборки по вкусу
31 — Id родителя
2 — глубина
template — шаблон.
Где $ali1 и $ali2 — вызовы с 31 и 29 id.
либо написать свой модификатор array_merge Тк его из коробки нет.
попробуйте что ли
Пробовал из условия убрать id шаблона, но все равно выводит артикул.
А если у вас артикулы в списках товаров, то тут чтобы не делать запросы для каждого товара, необходимо в сниппет заранее передать данные по родителям. тут придется написать маленький модификатор для array_merge И передать данные в msProduct (или какой вы сниппет используете?)
1. до сниппета нужно получить все тоже:
потом нам нужно эти 2 массива склеить через array_megre. Но обьяснять как делать этот модификатор — лень.
Возьмем сделаем чуток вычурно, зато понятно:
И далее в шаблоне tpl
указываем так:
В чанке:
Что то не то похоже делаю.
для передачи параметров можно использовать плейсхолдеры:
и уже в tpl вызывайте так:
Пробую вывод в шаблоне:
В чанке:
Товары перестали выводиться.
Проверьте что в чанке вообще выводятся данные:
И так попробуйте посмотреть:
и так:
если не выводиться, проверьте что переменные верно указаны. ну и еще в феноме не забывайте что есть $_modx, а не $modx.
каждый чих проверять уже перебор.
Дело в этой конструкции:
В журнале ошибка:
Все реквизиты есть на этой странице
P.S. Думаю Алексей не будет против.