Чтобы начать использовать Fenom в CMS MODX проделываем следующие шаги:
- Ставим приложение pdoTools от Василия Безумкина.
- Заходим в системные настройки и включаем опцию pdotools_fenom_parser: «Использовать Fenom на страницах».
Но скорей всего после этого он у вас не заработает, ведь на страницах все ещё есть включения открывающей скобки в CSS и JavaScript{. - Помещаем их в
{ignore}{/ignore} - Инлайновый, внедрённый в HTML, CSS-код выносим в файл (по опыту, в данном случае игнорирование их парсером pdoParser не помогает).
- Также отбиваем слова в коде справа от первой фигурной скобки
{одним пробелом — так парсер перестанет считать их за директивы.
Перед включением Fenom не забудьте сделать резервную копию всех файлов!!!
К примеру, наткнулся на дичайший баг с удалением всех файлов из папки assets при обычном включении Fenom, если файлы у вас подключены как статичные. (пруф)
Если вы хотите использовать директиву extends с расширением шаблона (при данном подходе уменьшается количество чанков). То обязательно писать код прямо в админке, либо подключить его как статичный файл. Через {include "file:templates/template.tpl"} не работает! (пруф)
Ниже приведена таблица соответствия классического синтаксиса MODX с Fenom.
| Content Elements | MODX Revolution | Fenom (pdoTools) |
|---|---|---|
| Templates | no tag representation | |
| Resource Fields | [[*field]] [[*id]] | {$_modx->resource.pagetitle} |
| Template Variables | [[*templatevar]] | {$_modx->resource.tv_param} |
| Chunks | [[$chunk]] | {$_modx->getChunk('chunk')} |
[[$Hello?name=`George`]] | ||
| Snippets | [[snippet]][[pdoResources? &limit=`5` &tpl=`ListRowTpl` ]] | {$_modx->runSnippet('pdoResources', [ |
| Plugins | no tag representation | |
| Modules | does not exist in Revolution, use CMPs | |
| Content Tags | ||
| Placeholders | [[+placeholder]] [[+page.nav]] | {$_modx->getPlaceholder('page.nav')} |
| Links | [[~link]] [[~15]] [[~[[+id]]]] | {$_modx->makeUrl(15)} |
| System Settings | [[++system_setting]] | {$_modx->config.site_name} |
| Language | [[%language_string_key]] | {$_modx->lexicon('language_string_key')} |
| Comment | [[-this is a comment]] | {* this is a comment *} |
| Template Variable | [[+tv.image]] | {$_pls['tv.image']} |
| If | [[+tv_param:is=`1`:then=`
Snippet: | {if $_modx->resource.tv_param}
|
Update: рекомендую вам вместо использования этого «рогатого зайца» MODX с Fenom и переключиться на современные CMS с нормальными шаблонизаторами, такие как October CMS или даже чистый Laravel, если есть достаточные знания по PHP.
Update 2: Fenom стал стандартом для MODX. Если вы всё ещё его используете, то просто обязаны отказаться от стандартного шаблонизатора в пользу Fenom. Если вы клиент, то проследите, чтобы в коде шаблонов (Элементы — Шаблоны) не использовались квадратные скобки [[.
3 comments