Блог/Вывод информации/блоков

Вывод информации на определенной странице или группе страниц

Автор: Кудашев Сергей

Решил поделить совсем простым решением для обеих версий 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)