Шаблонизатор Fenom в MODX Revolution

Сравнительная таблица элементов

Элементы ModX (пример) Fenom (пример)
Поля ресурса (Resource Fields) [[*pagetitle]] {$_modx->resource.pagetitle}
Переменные шаблона (Template Variables) [[*tag]] {$_modx->resource.tag}
Словари (Lexicon) [[%link_contacts]] {$_modx->lexicon('link_contacts')} или
{'link_contacts' | lexicon}
Ссылки (links) [[~12]]
[[~[[*id]]]]
{$_modx->makeUrl(12)}
{$_modx->makeUrl($_modx->resource.id)}
Системные настройки (System settings) [[++access_category_enabled]] {$_modx->config.access_category_enabled} или
{'access_category_enabled' | config} или
{$_modx->config['access_category_enabled']}
Плейсхолдеры (Placeholders) [[+image]] {$_modx->getPlaceholder(image)} или
{$image}
Плейсхолдеры с точкой или тире [[+tag.subtag]] {$_pls['tag.subtag']}
Комментарии (Comments) [[- Это комментарий]] {* Это комментарий *}
Игнорирование кода с круглыми скобками {ignore} {/ignore}
Чанки (Chunks) [[$chunk]] {$_modx->getChunk('chunk')} или
{include 'chunk'}
Сниппеты (Snippets) [[!pdoMenu? &parents=`0` &level=`0`]] {$_modx->runSnippet('!pdoMenu', ['parents'=>'0','level'=>'0'])} или
{'!pdoMenu' | snippet:['parents'=>'0','level'=>'0']}

Авторизация

Проверка авторизации пользователя Проверка доступа к контексту Проверка прав
{$_modx->isAuthenticated()} {$_modx->hasSessionContext('web')} {$_modx->hasPermission('load')}

Массивы и объекты

Массив/объект Описание Распечатать данные на экран
{$_modx->user} Массив с информацией о пользователе {$_modx->user | print_r}
{$_modx->context} Массив с информацией о контексте {$_modx->context | print_r}
{$_modx->resource} Массив с информацией о текущем ресурсе {$_modx->resource | print_r}
{$_modx->lexicon} Объект modLexicon, который можно использовать для загрузки произвольных словарей

Полезные функции

Функция Описание
{$_modx->regClientCss('/assets/css/style.css')} Подключение css файла
{$_modx->regClientScript('/assets/css/script.js')} Подключение js файла
{$_modx->sendForward(1)} Загрузка ресурса без изменения ссылки
{$_modx->sendRedirect('http://modx.ru')} Перенаправление на страницу
{$_modx->setPlaceholder('name', 'Ivan')} Сохранение плейсхолдера
{$_modx->toPlaceholder('name', 'Ivan','my')} Сохранение плейсхолдера с префиксом
{$_modx->toPlaceholders(['city' => 'Moscow', 'man' => ['name' => 'Ivan', 'surname' => 'Ivanov']],'my')} Предает многоуровневый массив в плейсхолдер
{$_modx->setPlaceholders(['name' => 'Ivan', 'surname' => 'Ivanov'])} Сохранение массива плейсхолдеров
{$_modx->getPlaceholder('name')} Получение значения плейсхолдера
{$_modx->getPlaceholders()} Получение списка плейсхолдеров
{$_modx->unsetPlaceholder('name')} Удаление плейсхолдера по ключу
{$_modx->unsetPlaceholders(['name', 'surname'])} Удаление плейсхолдера по массиву ключей
{$_modx->regClientStartupScript('//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js')} Добавление js файла перед закрытием тега head
{$_modx->regClientStartupHTMLBlock('<strong>Привет мир</strong>')} Добавление тегов перед закрытием тега head
{$_modx->regClientHTMLBlock('<div id="footer">(c) 2009 MODx</div>')} Добавление тегов перед закрытием тега body
{$_modx->runProcessor('resource/update', ['id' => 10,'alias' => 'test','context_key' => 'web'])} Запуск системного процессора
{$_modx->hasPermission('edit_chunk')} Возвращает true, если пользователь имеет доступ к политике
{$_modx->isMember('Marketing')} Проверяет, принадлежит ли пользователь группе
{$_modx->findResource('url-to/doc/')} Возвращает true если ресурс найден
{$_modx->sendError('unavailable')} Отправляем ошибку пользователю и прекращаем работу скрипта
{$_modx->getInfo()} Информация о скорости загрузки
{$_modx->getChildIds(23,6,['context' => 'web']} Получаем список идентификаторов дочерних ресурсов
{$_modx->getParentIds(23,6,['context' => 'web']} Получаем список идентификаторов родительских ресурсов, которым принадлежит данный ресурс
{$_modx->->getResource(1)} Получаем массив информации о текущем ресурсе по его id
{$_modx->getResources(['published' => 1, 'deleted' => 0])} Получаем массив ресурсов
{$_modx->cleanAlias()} Генерация псевдонима

Модификаторы

Со всеми модификаторами можно ознакомиться здесь

Условный оператор

{set $pt = $_modx->resource.pagetitle}
{if $pt == 'Главная'}
    <p>Главная страница</p>
{else}
    <p>Не главная</p>
{/if}

Второй способ

{set $pt = $_modx->resource.pagetitle}

{$pt == 'Главная' ? '<p>Главная страница</p>' : '<p>Не главная</p>'}

Перебор элементов

{var $array = ['key' => 'value']}

{foreach $array as $key => $value}
    <p>{$key} is {$value}</p>
{/foreach}

Выборка из списка

{set $count = 3}
{set $array = [1,2,3,4,5,6]}
{if $count in list $array}
 // действия удовлетворяющие условию
{/if}

Множественный выбор

{switch  $_modx->resource.id}
{case '1'}
    <p>Главная страница</p>
{case '2'}
    <p>О компании</p>
{case '3'}
    <p>Услуги</p>
{/switch}

Шаблоны

Название шаблона "Базовый шаблон"

<!doctype html>
<html lang="ru">
  <head>
    <meta charset="{$_modx->config.modx_charset}">
    <base href="{$_modx->config.site_url}" />
    <title>{$_modx->resource.longtitle} - {$_modx->config.site_name} </title>
  </head>
  <body>
   
    // добавляем чанк
    {include 'file:chunks/header.html'}
    
    // расширяем шаблон
    {block 'center'}
           {include 'file:chunks/center.html'}
    {/block}
 
    {include 'file:chunks/footer.html'}
   
    {include 'file:chunks/js.html'}

  </body>
</html>

Шаблон "Второстепенные страницы"

// расширяем шаблон    
{extends 'template:Базовый шаблон'}

{block 'center'}
       {include 'file:chunks/othercenter.html'}
{/block}