MODX Fenom — что это, как подключить и использовать
Fenom — быстрый и гибкий PHP-шаблонизатор, который в MODX используется через компонент pdoTools. Он компилирует шаблон в PHP-код и исполняет его за один проход, за счёт чего сложные чанки и крупные списки рендерятся быстрее и предсказуемее. Для разработчиков это удобный синтаксис, наследование шаблонов, модификаторы и безопасный доступ к данным сайта.
Зачем Fenom в MODX и чем он отличается
- Один проход без рекурсии — Fenom не «дожёвывает» плейсхолдеры циклами, как это делает стандартный парсер, а подставляет значения сразу.
- Производительность — шаблоны компилируются в PHP и кэшируются, что особенно заметно на листингах и каталоге.
- Чистый, понятный синтаксис — условия, циклы, фильтры, наследование блоков.
- Безопасные переменные — в MODX доступны служебные объекты для безопасных операций (например, получение ресурса, вызов сниппета).
На практике переход на Fenom часто сокращает время рендеринга больших чанков и упрощает логику шаблонов без «лесов» из фильтров.
Как правильно подключить Fenom в MODX
- Установите pdoTools через пакет-менеджер MODX.
- Fenom в чанках включён по умолчанию — настройка
pdotools_fenom_defaultактивирует синтаксис Fenom в чанках и шаблонах, которые обрабатывает pdoTools. - Чтобы обрабатывать Fenom на всей странице, включите системную настройку
pdotools_fenom_parser(режим «site-wide»). Этот режим продвинутый: Fenom запускается на этапе финальной обработки страницы. - Проверка/переключение парсера страницы: при необходимости задайте в системных настройках
parser_class=pdoParser(иparser_class_pathк классу pdoTools). В новых версиях pdoTools это обычно уже выставлено автоматически. - Не включайте опасные опции без необходимости:
pdotools_fenom_php(чистый PHP в чанках) иpdotools_fenom_modx(полный доступ к{ $modx }) — для продвинутых сценариев и только на доверенных проектах.
Важно: смешанный синтаксис (MODX-теги вместе с Fenom) допустим, но медленнее. Для максимальной скорости старайтесь писать чанк целиком на Fenom.
Быстрый старт: базовые примеры Fenom в MODX
| Задача | Пример (Fenom) | Комментарий |
|---|---|---|
| Вывод плейсхолдера | { $pagetitle } |
Аналог MODX Fenom — что это, как подключить и использовать / [[+pagetitle]]. |
| Условие | { if $longtitle } { $longtitle } { else } { $pagetitle } { /if } |
Тернарный вариант: { $longtitle ?: $pagetitle } . |
| Цикл | { foreach $rows as $row } { $row.title } { /foreach } |
Классический foreach по массиву. |
| TV с точкой в имени | { $_pls['product.color'] } |
Через $_pls для плейсхолдеров с точками/дефисами. |
| Вызов сниппета | { '!pdoResources' | snippet : ['parents' => 2, 'limit' => 10] } |
Через фильтр snippet с параметрами массивом. |
| Вставка чанка | { $_modx->getChunk('Card', $row) } |
Безопасный доступ к методам для вывода чанков. |
Практический пример: список новостей на Fenom
{ '!pdoPage' | snippet : [
'element' => 'pdoResources',
'parents' => 5,
'limit' => 12,
'tpl' => '@INLINE <article class="news"><h3> { $pagetitle } </h3><p> { $introtext } </p></article>',
'includeTVs' => 'teaser,thumb',
'showLog' => 0,
'toPlaceholder' => 'news_list'
] }
{ 'news_list' | placeholders }
{ 'page.nav' | placeholders }
Здесь pdoPage запускает pdoResources, результаты складываются в плейсхолдер news_list, а Fenom аккуратно подставляет переменные в шаблоне карточки.
Модификаторы и фильтры
- Строковые операции:
{ $pagetitle | upper },{ $introtext | truncate:180 }. - Даты:
{ $createdon | date_format:'%d.%m.%Y' }или собственные модификаторы сниппетов (например,dateAgo). - Сниппеты как модификаторы: добавляйте их через параметр сниппета (
&fenomModifiers) или список в настройкеpdotools_fenom_modifiers.
Лучшие практики и подводные камни
- Старайтесь избегать микса синтаксисов. Полностью переписывайте чанк на Fenom — это быстрее и предсказуемее.
- Режим «на всю страницу» (
pdotools_fenom_parser) включает Fenom на этапе финальной обработки. В нём каждое условие выполняется при каждом запросе, а фигурные скобки в JSON могут ломать парсинг. Вставляйте пробел после{в JS/JSON либо оборачивайте проблемные блоки в{ ignore } ... { /ignore }. - Безопасность: не включайте
pdotools_fenom_phpиpdotools_fenom_modxна проектах с редакторами контента без тех. экспертизы. - Статика и кэш: храните сложные шаблоны в
@FILEи включайте кэш Fenom для продакшена (pdotools_fenom_cache).
Типовые сценарии миграции на Fenom
- Начните с чанк-листингов: карточки каталога, новости, меню — перепишите на Fenom.
- Замените вложенные фильтры MODX на модификаторы Fenom, где это уместно.
- Перенесите вычисления из шаблонов в сниппеты, а Fenom оставьте для разметки.
- Постепенно откажитесь от смешанного синтаксиса на ключевых чанках.
- Только при необходимости включайте site-wide режим и тщательно тестируйте.
Когда Fenom особенно полезен
- Каталоги с пагинацией и фильтрами: много однотипных карточек.
- Блоги/СМИ: сотни элементов на странице, вывод отложенных блоков.
- Лендинги с условиями показа блоков, вариативные шаблоны.
Нужно внедрить Fenom и ускорить проект? 👉 Рассмотрите профессиональную разработку сайтов на MODX — поможем настроить pdoTools, оптимизировать шаблоны и сократить TTFB.
FAQ
Fenom включён сразу после установки pdoTools?
Да, синтаксис Fenom в чанках включён по умолчанию. Для обработки всей страницы включите настройку pdotools_fenom_parser.
Нужно ли ставить pdoParser как парсер системы?
В актуальных версиях pdoTools он как правило включается сам. При необходимости задайте parser_class= pdoParser и parser_class_path к классу pdoTools.
Опасно ли включать pdotools_fenom_php и pdotools_fenom_modx?
Да, эти опции дают больше прав шаблонам. Включайте их только на контролируемых проектах и понимайте риски.
Можно смешивать MODX-теги и Fenom?
Можно, но это медленнее. Рекомендуется писать чанк целиком на Fenom для максимальной скорости.

Напишите нам в WhatsApp



