Где правильнее вызвать сниппет - чанк или content?
Здравствуйте.
Недавно услышал рекомендацию, что лучше перенести вызов сниппетов в чанки.
Появилась у меня привычка сделать универсальный шаблон для вывода [*content*]. И уже делаю ресурсы с этим шаблон, внутри ресурса вызываю сниппеты. И всё работает.
Это правильно или не рекомендуется? Почему?
Недавно услышал рекомендацию, что лучше перенести вызов сниппетов в чанки.
Появилась у меня привычка сделать универсальный шаблон для вывода [*content*]. И уже делаю ресурсы с этим шаблон, внутри ресурса вызываю сниппеты. И всё работает.
Это правильно или не рекомендуется? Почему?
Комментарии: 8
Не знаю как с технической стороны правильнее, но нет ли страха, что менеджер или текстовый редактор что-нибудь сломают?
Да нет страха, т.к. есть два правила для всех:
1. Вошел в систему = сразу сделал бэкап.
2. Трогай только те ресурсы, с которыми тебе сказали работать.
1. Вошел в систему = сразу сделал бэкап.
2. Трогай только те ресурсы, с которыми тебе сказали работать.
Во-первых, содержимое ресурса выводится так:
[[*content]]
Во-вторых, почему бы не вызывать сниппеты в шаблоне по условиям? (Документация: https://docs.modx.pro/system/the-basics/filters-input-and-output#Условные-модификаторы-вывода)
1. У человека Evolution — там именно [*content*]
2. Для вывода по условиям нужно поставить PHx.
2. Для вывода по условиям нужно поставить PHx.
Вообще интересует и Evolution, и Revolution. Работаю с обеими системами.
Имеется в виду, что шаблон один на всех и в нем куча условий (вызовы чанков или сниппетов) в зависимости от номера id, например?
Да, только в Revo их лучше прописывать не так:
Во втором же варианте будут обработаны только текстовые строки и пустые [[$]], если условие не выполнено.
Но если используете Fenom, то можно не извращаться, поскольку там парсер работает по-другому:
[[*id:is=`15`:then=`[[$chunk]]`]]
а так:[[$[[*id:is=`15`:then=`chunk`]]]]
Это из-за того, что парсер сначала выполняет все чанки на странице, а потом только выводит нужные в соответствии с условиями. Во втором же варианте будут обработаны только текстовые строки и пустые [[$]], если условие не выполнено.
Но если используете Fenom, то можно не извращаться, поскольку там парсер работает по-другому:
{if $_modx->resource.id == 15}{$_modx->getChunk('chunk')}{/if}
По сути парсеру по барабану где ты вызываешь сниппет, это больше нацеленно на удобочитаемость кода. Если я не ошибаюсь в evo могут возникать проблемы с вложенностью сниппетов. А сниппет в чанке вполне нормально. Если тебе удобно почему бы и нет?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.