Вывод информации на определенной странице или группе страниц
Решил поделить совсем простым решением для обеих версий Modx, которое использую практически на каждом проекте. Проблема в том, что регулярно возникает необходимость вывода различных блоков информации в тех или иных местах макета, а создавать отдельный шаблон для этого не хочется, так как работать с большим количеством шаблонов более времязатратно.
Начну с простого, как вывести какую-то информацию в зависимости от текущего id документа, например 12. Для этого надо воспользоваться PHx или его аналогом в MODX Revolution, в зависимости от версии CMS/CMF.
# код для Evolution
[*id:is=`12`:then=`Вывод какой-то информации`*]
# код для Revolution
[[*id:is=`12`:then=`Вывод какой-то информации`]]
, при этом в качестве id может выступать любой параметр документа, включая TV. Вооружившись этим знанием мы можем создать шаблон, в котором соседние документы будут показываться только в потомках основного документа. Для этого достаточно создать единый шаблон и прописать следующий код:
# код для Evolution
[*isfolder:is=`0`:then=`[[PrevJumpNext]]`*]
# код для Revolution
[[*isfolder:isnot=`1`: then=`[[pdoNeighbors]]`]]
Здесь все просто. Мы проверяем, является ли данный документ контейнером, ведь родительский документ всегда будет контейнером, и если не является, то показываем сниппет выводящий соседние документы.
А еще проверяемые параметры можно группировать, например:
# код для Evolution
[*parent:is=`0`:or:is=`8`:then=`Вывод какой-то информации`*]
# код для Revolution
[[*parent:is=`0`:or:is=`8`:then=`Вывод какой-то информации`]]
, здесь информация будет показываться только в тех документах, родителями которых является документ с id 0, т.е. корневой документ, и документ с id 8.
В общем используя данное решение, можно легко показывать нужные нам блоки на разных документах, при этом не создавая большого количества шаблонов под эти нужды.
Комментарии (0)