ModX 3 - вывод чанка в зависимости от раздела
Вечер добрый. Собственно сабж.
Например есть сайт и там 3 направления — Ракеты, Арбузы, Магия.
Соответственно в каждом разделе и вложенных ресурсах будет своя информация.
Есть 3 чанка с параметрами внутри них.
Как сделать, что бы для ресурса с id = 1 и всех вложенных ресурсов выводился чанк arbuzi
А для ресурса с id = 25 и вложенных ресурсов был вывод чанка raketi
И следовательно для id=100 шел вывод чанка magic…
Находил варианты вывода, но, увы, они вызывают ошибку 500 в modx 3…
Например есть сайт и там 3 направления — Ракеты, Арбузы, Магия.
Соответственно в каждом разделе и вложенных ресурсах будет своя информация.
Есть 3 чанка с параметрами внутри них.
Как сделать, что бы для ресурса с id = 1 и всех вложенных ресурсов выводился чанк arbuzi
А для ресурса с id = 25 и вложенных ресурсов был вывод чанка raketi
И следовательно для id=100 шел вывод чанка magic…
Находил варианты вывода, но, увы, они вызывают ошибку 500 в modx 3…
Комментарии: 10
Если глубина вложенности равна 1, то просто проверяй родителя. Если нужна произвольная глубина вложенности лучше сделать у ресурсов доп.поле в котором хранить информацию о нужно чанке.
Очередной TV для проверки на Феноме, что этот ресурс содержит указание — какой блок выводить… эх…
Глубина вложенности неопределенная, от 2 до…
Глубина вложенности неопределенная, от 2 до…
Вообще есть компонент ExtraFields который позволяет легко расширить модель ресурса и не использовать ТВ.
Так же можно написать свой модификатор, который будет получать на вход id родителя и id ресурса и проверять есть родитель в ответе метода $modx->getParentIds($rid). Есть два нюанса. Во-первых я не знаю есть ли такой метод в тройке. Во-вторых если построение карты ресурсов будет отключено в системных настройках, то работать модификатор перестанет.
Так же можно написать свой модификатор, который будет получать на вход id родителя и id ресурса и проверять есть родитель в ответе метода $modx->getParentIds($rid). Есть два нюанса. Во-первых я не знаю есть ли такой метод в тройке. Во-вторых если построение карты ресурсов будет отключено в системных настройках, то работать модификатор перестанет.
Для получения id верхней категории можно использовать pdoField, а дальше разводить. Если Ракеты, Арбузы, Магия находятся в корне (уровень указывается в topLevel), то так:
{var $category = 'pdoField' | snippet : ['topLevel' => 1, 'field' => 'id']}
{$category == 1}
{include 'arbuzi'}
{elseif $category == 25}
{include 'raketi'}
{elseif $category == 100}
{include 'magic'}
{else}
{/if}
- Ракеты (1)
- Подкатегория 1 (2)
- Товар 1 (3)
- Товар 2 (4)
- Товар 3 (5)
- Подкатегория 2 (6)
- Товар 4 (7)
- Товар 5 (8)
- Подкатегория 1 (2)
Это видел, а вот как работать с теми ресурсами, что вложены в Арбузы, Ракеты и Магию…
Так в них и выводите. В $category будет ID не родителя, а категории первого уровня.
То есть если у Вас так:…
То есть если у Вас так:…
Понял, отлично. Спасибо!)
Протестировал. Ошибка 500
Это у Вас что-то не так ).
Смотрите логи сервера.
Смотрите логи сервера.
Да, почему то феном в чанке не хочет…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.