Используем шаблонизатор Fenom в MODX

Чтобы начать использовать Fenom в CMS MODX проделываем следующие шаги:

  1. Ставим приложение pdoTools от Василия Безумкина.
  2. Заходим в системные настройки и включаем опцию pdotools_fenom_parser: «Использовать Fenom на страницах».
    Но скорей всего после этого он у вас не заработает, ведь на страницах все ещё есть включения открывающей скобки в CSS и JavaScript {.
  3. Помещаем их в {ignore}{/ignore}
  4. Инлайновый, внедрённый в HTML, CSS-код выносим в файл (по опыту, в данном случае игнорирование их парсером pdoParser не помогает).
  5. Также отбиваем слова в коде справа от первой фигурной скобки { одним пробелом — так парсер перестанет считать их за директивы.

Перед включением Fenom не забудьте сделать резервную копию всех файлов!!!

К примеру, наткнулся на дичайший баг с удалением всех файлов из папки assets при обычном включении Fenom, если файлы у вас подключены как статичные. (пруф)

Если вы хотите использовать директиву extends с расширением шаблона (при данном подходе уменьшается количество чанков). То обязательно писать код прямо в админке, либо подключить его как статичный файл. Через {include "file:templates/template.tpl"} не работает! (пруф)

Ниже приведена таблица соответствия классического синтаксиса MODX с Fenom.

Content ElementsMODX RevolutionFenom (pdoTools)
Templatesno tag representation 
Resource Fields[[*field]]
[[*id]]
{$_modx->resource.pagetitle}
{$_modx->resource.content}
{$_modx->resource.id}
Template Variables[[*templatevar]]{$_modx->resource.tv_param}
Chunks[[$chunk]]{$_modx->getChunk('chunk')}
{include 'chunk'}
 [[$Hello?name=`George`]] 
Snippets[[snippet]]
[[pdoResources?
&limit=`5`
&tpl=`ListRowTpl`
]]
{$_modx->runSnippet('pdoResources', [
'limit' => 5,
'tpl' => 'ListRowTpl',
])}
Pluginsno tag representation 
Modulesdoes not exist in Revolution, use CMPs 
Content Tags  
Placeholders[[+placeholder]]
[[+page.nav]]
{$_modx->getPlaceholder('page.nav')}
Links[[~link]]
[[~15]]
[[~[[+id]]]]
{$_modx->makeUrl(15)}
{$_modx->makeUrl($id)}
{$id|url}
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=`
Yes
`:else=`
No
`]]

 

Snippet:
return $modx->resource->get('longtitle') ? $modx->resource->get('longtitle') : $modx->resource->get('pagetitle');

{if $_modx->resource.tv_param}
Yes
{else}
No
{/if}

 

{$_modx->resource.longtitle?:$_modx->resource.pagetitle}

https://docs.modx.pro/komponentyi/pdotools/parser
https://github.com/fenom-template/fenom/blob/master/docs/ru/readme.md

Update: рекомендую вам вместо использования этого «рогатого зайца» MODX с Fenom и переключиться на современные CMS с нормальными шаблонизаторами, такие как October CMS или даже чистый Laravel, если есть достаточные знания по PHP.

Update 2: Fenom стал стандартом для MODX. Если вы всё ещё его используете, то просто обязаны отказаться от стандартного шаблонизатора в пользу Fenom. Если вы клиент, то проследите, чтобы в коде шаблонов (Элементы – Шаблоны) не использовались квадратные скобки [[.

Total
0
Shares
3 comments
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Previous Article

Первые впечатления от Windows 10

Next Article
Новый логотип Google 2015

Google сменил логотип

Related Posts
отключить CSS
Далее

Как отключить CSS в Chrome и Firefox

Иногда бывает нужно временно отключить CSS в браузере для тестирования сайта. Ниже рабочий метод для удаления стилей в…