Чтобы начать использовать 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