Термины и базовые понятия в CMS/CMF MODX Revolution. Синтаксис modx
Основной синтаксис MODX
Абсолютно для любого пользователя сайта на MODX, теги несут основополагающее значение, по причине того, что они являются основными рабочими элементами.
Указывая тот или иной тег, во время работы с сайтом, пользователь получает возможность вызвать интересующую его часть HTML, либо PHP кода, отрывок текста или какие-то переменные документы.
Различают следующие виды синтаксиса тегов MODX:
— для полей и элементов;
— для вывода контента;
— для системных параметров парсера;
Последний вид является своеобразным упрощенным форматом.
Раньше функция анализирования каждого набора тегов носила самостоятельный характер, и осуществлялась в определенном строгом порядке: переходя от одного уровня вложенности к другому. Таким образом, выполнение обработки внутреннего тега всегда переносилась до момента следующего прохода. Сейчас же процесс обработки тегов совершенно не зависит от представляющих их типов элементов, и происходит мгновенно, то есть сразу с момента их появления. Обработка встроенных тегов осуществляется перед тегом, который именуется внешним. Другими словами, сложные теги обрабатываются изнутри. Благодаря такой особенности появилась возможность прописывания гораздо более сложных составных тегов.
Комментарии в дескрипторах (тегах).
Результатом изучения обсуждений, происходящих на форумах, стало получение информации о том, что довольно значительная часть пользователей испытывает потребность в комментариях. В момент обнаружения тега, представляющего из себя элемент, который не существует, парсер, при условии настройки по умолчанию, отбрасывает весь дескриптор. Использовав такую особенность поведения, можно осуществить добавление комментариев в шаблоны, поля ресурсов и чанки. При этом отображение комментария во фронтенде происходить не будет. Стоит отметить, что если тег будет составным, то осуществление обработки внутренних тегов произойдет до того как парсер отбросит значение
В MODX Revolution версии выше 2.2+ любой вид дескриптора, который начинается дефисом будет игнорироваться парсером. Все теги, находящиеся внутри такого комментария будут отброшены. За счет этого, можно не повлияв на нагрузку, вставить абсолютно любые составные теги в структуру комментария.
Составляющие части тегов
Структура любого тега, в не зависимости от его вида, имеет несколько частей.
Они могут быть прописаны в линию, так: [[!getResourcer? &parents=’5,10,11′ &limit=’7′]] или быть расположенными в столбик.
[[!getResourcer? &parents='5,10,11' &limit='7' ]]
[[!getResourcer? &parents='5,10,11' &limit='7' ]] |
Параметры
Всем тегам предоставлена гипотетическая возможность иметь параметры. К примеру, у нас есть чанк с именем zdravstvujte и со следующим содержимым внутри:
Здравствуйте, [[+name]]!
Здравствуйте, [[+name]]! |
В данном чанке есть плейсхолдер ([[+name]]), и мы к примеру хотим задать ему какие нибудь значения.
Раньше, для осуществления данного действия требовалось, использование сниппета, который выполнит установку значения, и это было обязательным условием. Но теперь все существенно изменилось. Сейчас достаточно просто указать интересующее значение в параметрах чанка, пример:
[[$zdravstvujte? &name=`Василий`]]
[[$zdravstvujte? &name=`Василий`]] |
В итоге получим следующее:
Здравствуйте, Василий!
Кэширование
В случае возникновения необходимости, можно установить обработку тега после каждой операции по запросу страницы. Просто поставьте восклицательный знак после квадратных скобок, без пробела.
[[!+placeholder]] [[!$chunk]] [[!*template_var]] [[!snippet]]
[[!+placeholder]] [[!$chunk]] [[!*template_var]] [[!snippet]] |
Плейсхолдеры
Вызвав не кэшируемый плейсхолдер, можно осуществить установку сниппетом, интересующего плейсхолдера.
[[!Profile]] Привет, [[!+username]].
[[!Profile]] Привет, [[!+username]]. |
Проверка синтаксиса
Проверка корректного написания тегов можно осуществить при помощи плагина SyntaxChecker.
Аналогичную функцию может выполнить редактор Ace, отличительной особенностью которого является подсветка синтаксиса тегов MODX.
Весь список тегов доступных для MODX Revolution можно найти в официальном руководстве на сайте rtfm.modx.com
В следующей статье мы рассмотрим Фильтры phx и модификаторы MODX.
web-revenue.ru
Синтаксис тегов в MODx Revolution
Рассмотрим основной синтаксис встроенных тегов MODx Revo. Все встроенные теги должны обрамлятся двумя квадратными скобками с левой и правой стороны, к примеру [[test]]. Ниже приведена таблица с возможными применениями синтаксиса:
Поля ресурса ( Resource Fields )стандартные поля страниц, типа заголовка или контента | [[*field]] | [[*pagetitle]]выведет заголовок страницы |
TV-поле ( Template Variables )дополнительные поля страниц | [[*templatevar]] | [[*tags]]выведет содержимое дополнительного поля tags |
Чанк ( Chunk )отдельные кусочки html-кода | [[$chunk]] | [[$footer]]выведет содержимое чанка footer |
Сниппет ( Snippet )отдельные скрипты php | [[snippet]] | [[getResources]]выведет закешированный результат работы сниппета getResources |
Плейсходер ( Placeholder )подставляет результаты работы какого-нибудь сниппета | [[+placeholder]] | [[+modx.user.id]]выведет id текущего авторизированого пользователя |
Ссылка ( Link )динамически генерирует ссылку до указанного документа по id | [[~link]] | [[~1]]Создаст ссылку до ресурса с id = 1 |
Настройки контекста ( System Settings )выводит активный параметр используемого контекста | [[++system_setting]] | [[++site_url]]Выведет ссылку на сайт |
Комментарий ( Comment )комментрий для используемого тега | [[tag?-comment]] | [[*id?-id текущей страницы]]носит описательный характер для разработчика |
Структура тегов
Каждый тег может содержать несколько частей, ниже тег разбит на возможные части:
В целом, как то так: [[!name:lcase?name=`Вася`-выводим приветствие]] - здесь мы обращаемся к сниппету с именемname, переводим регистр символов в нижний регистр с помощью phx ( lcase ), задаем параметр name равный "Вася" и комментируем для себя что это значит
Параметры
Параметры можно передавать не только в сниппеты, но и в чанки, например у нас есть чанк hello:
Привет, [[+name]]!В шаблоне выведем чанк таким образом:
[[$hello?name=`мир`]]Результат примера будет: Привет, мир!
При передаче параметра в снипет, данные записываются в массив $scriptProperties.
Self checking
Для автоматической проверки синтаксиса, можно установить плагин SyntaxChecker.
uscms.ru
Советы для начинающих работу с MODX MODX
Советы для начинающих:
Установите редакторы, подсвечивающие код и облегчающие чтение кода. Рекомендую Ace
Для закачки файлов на сервер установите Filezilla
Установите подсветку синтаксиса через Ace.
Читайте официальную документацию и другие источники полезной информации, другие блоги (см.ссылки), общайтесь в сообществах, в MIRC канале #modx, #xpdo. Не бойтесь задавать вопросы, все когда-то начинали с нуля.
Изучайте новые инструменты и приёмы не только MODX, но и веб-разработки. Изучайте HTML5, CSS3, jQuery, sql, Seo и др. Читайте хабр, Codrops, смотрите что нового на Creattica
Научитесь пользоваться хотя бы несколькими редакторами кода и ПОСТОЯННО совершенствуйте навыки их использования, в основновном я использую Sublime Text 2
Научитесь пользоваться Chrome Developer Tool или Mozilla Firebug.
Повышайте продуктивность, автоматизируйте рутинные задачи. Пример, использование Emmet для редактора Sublime, одна строка сгенерирует целую страницу:
html:5>(header>div#banner>(a[href=page$.htm]>img[src="path$.jpg"])*3)+(aside>ul>li>p*3>lorem)+(article.module*4>p*2>lorem)+footer>ul>li>a[href="#"]*5Что не нужно делать начинающему работу с MODX:
Не устанавливайте редактор WYSIWYG TinyMCE и аналогичные для "облегчения" набора содержания ресурса. Контент-менеджер ДОЛЖЕН знать HTML и уметь его использовать иначе "красоты ради" вы будете иметь страницы заполненые h2 текстом полностью (кто не понимает, скажу просто - это плохо). HTML нужно знать и уважать.
Не копируйте куски кода найденные где-то на форумах, в сообществах и в моём блоге бездумно. Попробуйте набрать их руками и осмыслить что к чему.
Не задавайте со старта вопросы, если что-то не выходит, попробуйсте найти самостоятельно ошибку, тогда вы её точно запомните и не сделаете снова.
Не сидите постоянно за компьютером, выходите чаще на улицу. Удалите все игры и избавьтесь от пожирателей времени как ТВ, WoW, вконтакт, одноклассники и др. Веб-разработка, как и любая другая работа требует усилий, если думаете, что без труда наловишь кучу рыбы в "энторнете", то должен вас разочаровать...
Данный список не окончательный и будет периодически обновляться.
Как обычно жду ваших комментариев и советов для других. Всем спасибо
modx.ws
Термины и базовые понятия в CMS/CMF MODX Revolution MODX
Ресурс
Базовые типы ресурсов в Revolution: документ, статический ресурс, символическая ссылка, ссылка.Также в Revolution можно создавать свои собственные типы ресурсов. Каждый ресурс в MODX имеет свой уникальный id.
Шаблон
Понятие шаблона в MODX ничем не отличается от других CMS. Шаблон - это HTML код страницы, в котором некоторые блоки текста или участки кода заменяются с помощью специального синтаксиса на сущности, описанные ниже. Такими сущностями могут быть чанки, TV, плейсхолдеры, вызовы сниппетов или системные переменные.
Ресурсы, которые имеют тип документ всегда привязаны к одному из существующих шаблонов.
MODX не требует каких-либо специально сформированных наборов файлов для создания шаблонов. Шаблоном может являться любой HTML, XML, javascript код, текст или даже пустая строка.
Чанк
Чанк - простейшая MODX сущность. Это просто часть шаблона (или весь шаблон), которая для удобства работы или еще по каким-либо соображениям, «вырезана» и сохранена с собственным именем.
Чанки не обязательно используются как части шаблона; их используют также для того, чтобы задать вывод определенного php кода (см. сниппет) на странице.
В шаблоне веб-документа подставить содержимое чанка можно, указав специальную конструкцию:
[[$название_чанка]]TV
TV (template variable), ТВ или дополнительное поле обозначается значком телевизора в админ-панели Revolution.
Суть TV заключается в следующем. Код в шаблоне вывода не меняется, он всегда одинаковый для любого документа (ресурса), которому присвоен данный шаблон. Для тех блоков на странице, которые создаются «на лету» применяются либо сниппеты, либо TV. Т.е. TV - это небольшой элемент страницы, который не является постоянным для разных документов, имеющих один шаблон.
Простейший пример использования TV - дата создания записи в блоге. Каждая запись в блоге выводится по одному и тому же шаблону, но строка с датой у каждой записи будет своя.
Важно понимать, что у каждого ресурса в MODX есть набор стандартных полей, которые хранятся в базе данных. Любое из этих полей может быть незаполненным, но при этом оно существует. Механизм TV позволяет создавать для документа (ресурса) неограниченное количество дополнительных полей, при этом не внося изменения в структуру базы данных.
Привязка TV при их создании осуществляется не к документу, а к шаблону (поэтому они и называются переменными шаблона). Благодаря этому, можно создать TV один раз и пользоваться этой переменной для любого документа.
Чтобы вывести значения TV в шаблоне используются следующие конструкции:
[[*название TV]]Сниппет
Самая мощная сущность в MODX. Именно наличие сниппетов позволяет создавать очень сложные сайты, вообще не зная PHP.
По сути сниппет - это некоторая функция, написанная на php. Внутри эта функция может быть устроена как угодно сложно, главное, что от нее требуется - либо сформировать определенный вывод на странице сайта, либо проделать какие-то действия по обработке, сохранению или удалению каких-либо данных.
Чтобы можно было управлять действиями сниппета, не внося изменения в код (!), каждый сниппет вызывается в MODX с набором параметров. В зависимости от значений этих параметров сниппет может менять свое поведение в широких пределах.
Некоторые сниппеты являются практически незаменимыми в MODX и считаются стандартными. Тем не менее, если вам не требуется вся мощь стандартных сниппетов, вы можете решить те же задачи написанием собственного php кода.
Конструкции для вызова сниппета на странице выглядят одинаково в обоих ветках:
[[название_сниппета]] - вызов без параметров [[название_сниппета? ¶m1=`знач1` ¶mN=`значN`]] - вызов с параметрамиОднако, конструкции выше предназначены для т.н. кешированного вызова сниппетов. В этом варианте после выполнения сниппета результат его работы (код или текст, который вернет php функция) будет сохранен в кеше MODX. Такое поведение не всегда желательно. Поэтому вызов сниппета может быть некешированным. Такой вызов ничем не отличается от обычного, но php код сниппета будет выполняться всегда, даже если остальной код на странице уже сформирован и закеширован в MODX.
Некешируемые вызовы сниппетов выглядят так:
[[!название_сниппета]]Если задача сниппета - вывести какой-то текст или часть HTML страницы, то одним из параметров, как правило, является чанк с шаблоном вывода сниппета. При этом само содержимое чанка в итоге может и не появиться на странице - все зависит от логики выполнения сниппета.
Плагин
Плагин в MODX - это php код, который выполняется при наступлении определенных событий. Этот код невозможно вызвать в шаблонах, при создании плагина указывается одно или несколько из предустановленных событий, к которым привязан данный код. Таким образом, плагины расширяют функционал самого ядра MODX, позволяя не вносить изменения в код системных файлов MODX.
Примерами событий могут быть инициализация парсера MODX, сохранение формы редактирования ресурса в админке, событие «страница не найдена».
Для управления работой стандартных плагинов тоже предусмотрен механизм передачи параметров в плагин. Визуально передача параметров в плагин реализована в виде специальной формы в админ-панели MODX. Однако по сути плагин и его параметры ничем не отличаются от сниппета с набором параметров.
Компонент
Представляет собой полностью самостоятельное веб-приложение, которое выполняется в админпанели MODX. Функционал, оформление, название - могут быть любыми. MODX предоставляет лишь место в меню менеджера для компонента, все остальное он делает сам. Устанавливаются компоненты через Управление дополнениями (находится в меню менеджера) скачиваясь из репозитория дополнений.
Плейсхолдеры
Это конструкции, которые должны быть замещены значениями, когда страница будет отправлена в браузер. Плейсхолдеры могут заменяться на необходимые значения самим парсером MODX или же одним из сниппетов. Когда страница будет готова к отправке в браузер, все незамененные плейсхолдеры будут вырезаны парсером MODX.
Синтаксис плейсхолдеров
[[+название]]Стандартные поля документа
Для стандартных полей документа в шаблоне используется тот же синтаксис, что и для вывода значений TV.
Синтаксис:
[[*название]]Системные настройки MODX
MODX имеет большое количество настроек, которые определяют поведение ядра и парсера, влияют на отображение URL, дат, языков и пр. Самой часто используемой системной настройкой можно считать название сайта. Для вывода значений из конфигурации предусмотрены следующие конструкции.
[[++system_setting]]Отладочные теги
Используются для вывода времени выполнения скриптов или количества запросов.
Синтаксис:
[^q^] - кол-во запросов в БД [^t^] - время генерации страницыЯзыковые константы
Существуют только в Revo. Используются при организации многоязычия или для вывода сообщений из сниппета на текущем языке, установленном в MODX.
Синтаксис:
[[%ключ (название) языковой константы]]Комментарии MODX
Синтаксис :
[[-текст]]Комментарии появились в Revo и позволяют временно «отключать» сниппеты, чанки или TV, не удаляя их вызов из кода. Парсер MODX пропускает такие конструкции, не обрабаытывая их.
Дополнительно почитать:
modx.ws
Fenom MODX - Документация и примеры
Всем привет, дорогие читатели моего блога!
Я уже давно ничего не писал в свой блог, в связи с тем, что у меня есть заказы + учеба. Вообщем времени не так уж много.
Сегодня я хочу рассказать про шаблонизатор под названием Fenom, привести примеры. Может кто-то уже активно им пользуется, и думаю, что найдет что-нибудь нового и полезного в этой статье.
Давайте сначала разберемся, что из себя представляет Fenom.
Fenom - это быстрый и удобный шаблонизатор, который очень схож со Smarty (в плане синтаксиса), но является намного лучше! С его помощью Вы можете ускорить разработку, время на выполнение запросов, сократить количество чанков, использовать циклы прям в чанках/шаблонах и многое другое
В MODX Fenom появился в 2015 году, с выходом обновления pdoTools 2.0. Теперь когда вы устанавливается pdoTools, парсер Fenom уже активен, но не обрабатывает страницы и шаблоны сайта
Для того, чтобы включить fenom (обработку страниц и шаблонов сайта), необходимо активировать параметр pdotools_fenom_parser в системных настройках.
Синтаксис
Можете посмотреть официальную документацию, а я буду рассматривать синтаксис, касательно MODX Revolution
Итак, как я уже говорил, синтаксис довольно прост, вместо привычных двойных квадратных скобок в MODX [[ ]] и Fenom используются одинарные фигурные скобки { }
Чтобы использовать более сложные функции, в pdoParser есть служебная переменная {$_modx}, которая даёт безопасный доступ к некоторым переменным и методам системы.
- {$_modx->resource.id} - вывод id текущего ресурса
- {$_modx->resource.tv_name} - вывод tv текущего ресурса
- {$_modx->user}- массив текущего пользователя
- {$_modx->makeUrl(10)} - ссылка на 10 ресурс
- {$_modx->config.system_setting} - вывод системной настройки
Игнорирование кода
Так как в Fenom используются фигурные скобки, то возможно возникнет такая проблема, что не будут выполняться какие-то скрипты/стили.Для этих случаев существует переменная ignore. Для того, чтобы выключить обработку Fenom необходимо просто обернуть скрипты/стили в этот тег:
<style> {ignore} body {font-size: 16px; background-color: #000;} {/ignore} </style>Плейсхолдеры с точкой или тире
В MODX как вы знаете существуют TV параметры у ресурса или плейсхолдеры с точкой (данные массивов). Так как они не соответсвуют правилам наименования, то в Fenom для доступа к плейсхолдерам и TV существуют служебная переменная {$_pls}
<!-- Вывод сразу --> {$_pls['tag.subtag']} <!-- Или через переменную --> {var $tv_name = $_pls['tv-name']} {$tv_name}Как запустить сниппет в Fenom?
Я знаю два способа, как запустить сниппет в Fenom, какой использовать, решать только Вам.
1 способ:
{'!pdoPage' | snippet : [ 'parents' => $_modx->resource.id, 'limit' => 5, 'toPlaceholder' => 'result' ]} {$_modx->getPlaceholder('result')} {$_modx->getPlaceholder('page.total')} {$_modx->getPlaceholder('page.nav')}2 способ:
{$_modx->runSnippet('!pdoPage', [ 'parents' => $_modx->resource.id, 'limit' => 5, 'toPlaceholder' => 'result' ])} {$_modx->getPlaceholder('result')} {$_modx->getPlaceholder('page.total')} {$_modx->getPlaceholder('page.nav')}Если необходимо вызвать pdopage без параметров:
#1 способ {'!pdoPage' | snippet} #2 способ {$_modx->runSnippet('!pdoPage')}Примеры использования Fenom MODX:
Условие IF
#Устанавливаем id текущей страницы в переменную {set $id = $_modx->resource.id} #Условие {if $id == '1'} <p>Главная страница</p> {else} <p>Не главная</p> {/if>Условие IF с использованием тренарного оператора
#Устанавливаем id текущей страницы в переменную {set $id = $_modx->resource.id} #Условие {$id == '1' ? '<p>Главная страница</p>' : '<p>Не главная</p>'}Вывод чанка
{include 'myChank'}Получение значения TV у произвольного ресурса:
{1 | resource: 'tv_name'}*1 - id ресурса
Вывод MIGX через Fenom для текущего ресурса:
{set $rows = json_decode($_modx->resource.tv_images, true)} {foreach $rows as $row} {$row.image} {/foreach}Информация о прозводителе в miniShop2
{$_modx->makeUrl($_pls['vendor.resource'])} {$_pls['vendor.name']}) {$_modx->getPlaceholder('vendor.name')}Получение изображения через переменную с точкой ($_pls)
{$_pls["tv.img"] | phpthumbon : "w=300&h=200&zc=1"} //Без префикса {$img | phpthumbon : "w=300&h=200&zc=1"}Получение превью изображений в корзине
{if $product['120x90']?} <img src="{$product['120x90']}" alt="{$product.pagetitle}" title="{$product.pagetitle}"/> {else} <img src="{'assets_url' | option}components/minishop2//web/ms2_small.png" alt="{$product.pagetitle}" title="{$product.pagetitle}"/> {/if}Модификатор дата
{$_modx->resource.publishedon | date_format:"%d-%m-%Y %H:%M:%S"}Вывысти текущий год
{'' | date : 'Y'}Проверка авторизации
{$_modx->isAuthenticated()} {$_modx->hasSessionContext('web')} {$_modx->hasPermission('load')}Источник: docs.modx.pro
Лучший способ выразить благодарность автору - поделиться с друзьями!
Спасибо, что поделились :)
13.07.2017 / 12113
igamov.ru
Синтаксис тегов / Основы / Система / docs.modx.pro
Теги - это основные рабочие элементы MODX для пользователя сайта.
Указывая теги на странице, вы можете вызвать какой-то кусок HTML или PHP кода, текст из словаря, или переменные документа.
Для упрощения логики работы парсера, увеличения производительности и избежания путаницы с составными тегами синтаксис тегов разных элементов сведен к одному принципу: все теги объявляются в квадратных скобках, а тип тега определяется символом перед наименованием.
Синтаксис тегов
Для элементов и полей
Шаблоны | Нет | Нет | |
Поля ресурсов | [*field*] | [[*field]] | [[*pagetitle]] |
Дополнительные поля | [*templatevar*] | [[*templatevar]] | [[*tags]] |
Чанки | {{chunk }} | [[$chunk]] | [[$header]] |
Сниппеты | [[snippet]] | [[snippet]] | [[getResources]] |
Плагины | Нет | Нет | |
Модули | Нет | В Revo нет модулей |
Для вывода контента
Плейсхолдеры | [+placeholder+] | [[+placeholder]] | [[+modx.user.id]] |
Ссылки | [~link~] | [[~link]] | [[~[[*id]]? &scheme=`full`]] |
Системные настройки | [(system_setting)] | [[++system_setting]] | [[++site_start]] |
Языковые теги | Нет | [[%language_string_key]] | |
Комментарии | Нет | [[-this is a comment]] |
Для системных значений парсера MODX
Выводит время потраченное на запросы к базе данных | [^qt^] |
Выводит количество запросов к базе данных | [^q^] |
Выводит время потраченное на работу PHP скриптов | [^p^] |
Выводит общее время потраченное на генерацию страницы | [^t^] |
Выводит источник содержимого (база данных или кэш) | [^s^] |
Принятие такого упрощенного формата позволяет новому парсеру быть полностью рекурсивным и не зависеть от регулярных выражений.
Раньше каждый набор тегов анализировался самостоятельно в определенном порядке, по уровням вложенности, и обработка внутреннего тега откладывалось до следующего прохода. Сейчас теги обрабатываются по мере их появления, независимо от типов элементов, которые они представляют, и встроенные теги обрабатываться перед внешним тегом (то есть обработка сложных тегов идет изнутри), что позволяет прописывать гораздо более сложные составные теги.
Комментарии в тегах
Обсуждения на форумах показывают, что некоторые люди чувствуют необходимость в комментариях. По умолчанию при обнаружении тега, который представляет собой элемент, которого не существует, парсер отбрасывает весь тег. Используя это поведение, вы можете добавить комментарии в шаблоны, чанки и поля ресурсов, и этот комментарий не будет отображен во фронтенде. Однако, если тег составной, то все внутренние теги обработаются прежде чем парсер отбросит значение.
В MODX Revolution 2.2 любой тег, начинающейся с дефиса (-) игнорируются парсером, и любые теги внутри такого комментария будут отбрасываться. Это позволяет вставлять в комментарии любые составные теги, не влияя на нагрузку.
[[- Это комментарий. Он будет удален из вывода страницы. ]]Структура тегов
Каждый тег состоит из нескольких частей. Давайте разберем тег на составляющие:
[[ // открываем тег ! // указание, что тег НЕкешируемый (необязательно) elementToken // тип элемента $ - чанк, * - поле элемента или ТВ, + - плейсхолдер, и т. д. elementName // имя элемента @propertyset // можно указать набор параметров для этого элемента (необязательно) filterName=`modifier` // один или несколько фильтров вывода (необязательно) ? // указание того, что дальше идут параметры элемента (необязательно если параметры отсутствуют) &propertyName=`propertyValue` // любой параметр элемента, начинающийся с & &propertyName2=`propertyValue2` // параметров может быть сколько угодно, и все начинаются с & ]] //закрываем тегЭти теги могут прописываться в одну линию или располагаться на нескольких строках для удобства. Оба варианта однозначны:
[[!getResources? &parents=`123` &limit=`5`]] [[!getResources? &parents=`123` &limit=`5` ]]Параметры
Все теги (а не только сниппеты) могут иметь параметры. Например, у нас есть чанк Hello:
Привет, [[+name]]!В чанке есть плейсхолдер. Мы хотим задать значение для этого плейсхолдера. Раньше нужно было использовать сниппет, который установит это значение. Но не теперь. Просто укажите нужное значение в параметрах чанка:
[[$Hello? &name=`Сергей`]]На выходе мы получим:
Привет, Сергей!Кэширование
Мы можем указать, что тег нужно обрабатывать после каждого запроса страницы. Для этого нужно просто поставить восклицательный знак сразу после открывающихся квадратных скобок:
[[!snippet]] [[!$chunk]] [[!+placeholder]] [[!*template_var]]и т. д.
Плейсхолдеры
Если вам необходимо, чтобы сниппет каждый раз при запросе страницы устанавливал какой-то плейсхолдер, то плейсхолдер тоже нужно вызывать некэшируемым:
[[!Profile]] Привет, [[!+username]].Проверка синтаксиса
Для новичков синтаксис тегов кажется сложноватым, поэтому вы можете использовать плагин SyntaxChecker для проверки правильности написания тегов.
Также можно использовать замечательный редактор Ace, который хорошо подсвечивает синтаксив тегов MODX.
docs.modx.pro
Урок 3. Базовая настройка и установка пакетов MODX
На этом уроке мы разберемся в базовых настройках сайта. Также проведём установку дополнений из репозитория MODX. В этом уроке мы рассмотрим лишь основные настройки и вы поймёте, что менеджер MODX Revolution имеет множество настроек конфигурации и мы вначале рассмотрим основные, а потом изучим разные части менеджера.
Название сайта и другие настройки
В зависимости от вашего вебсайта и его насколько сложным вы собираетесь его сделать, то вам понадобится стандартный набор настроек вашего сайта, чтобы он работал и функционировал так, как вы этого хотите.
Первой настройкой нашего только что установленного сайта MODX Revolution будет, конечно же, имя сайта. Если вы посмотрите на верхнюю панель вашего браузера, вы увидите сгенерированное MODX Revolution имя сайта.
Очевидно, что нужно поменять имя сайта на нужное нам. Настройки сайта и другие настройки в менеджере находятся в выпадающей панели System название System Settings.
На этой странице показаны все системные настройки стандартного набора MODX Revolution. Здесь вы можете увидеть очень большое количество количество настроек, даже вы можете создавать собственные настройки. Мы рассмотрим лишь некоторые из настроек.
В данным момент настройки, которые нас интересуют, это настройки сайта Site settings и мы их можем найти используя функцию фильтра.
В выпадающем меню фильтра Filter by Area можно выбрать нужные нам настройки. Выберите в списке Site, чтобы отфильтровались настройки сайта.
Отредактируем имя сайта сделав в поле имени двойной клик для того, чтобы отредоктировать его. Удалим текущее название сайта и вставим свое имя «Изучение MODX Revolution». После окончания редактирования имени сайта нажмите ВВОД и спустя некоторое время после обновления страница отобразит новое имя сайта.
Теперь если мы взглянем на заголовок, то он отражает текущее название сайта, а не название, которое было по-умолчанию.
Это только простой пример редактирования системных настроек, но если посмотреть на все настройки, то можно увидеть, что настраивать можно очень многое в сайте. Пока что это так и оставим, я потом вернусь к объяснению нескольких настроек.
Установка дополнений
Другая вещь, с которой необходимо ознакомится в MODX Revolution это то, как устанавливаются дополнения.
Дополнения включают в себя сниппеты, плагины, шаблоны, компоненты третей стороны, которые расширяют функциональность сайта и улучшают его отображение. Есть множество дополнений в репозитории MODX и разработчики постоянно делают их еще больше.
Еще одним положительным моментом Revolution в сравнении с Evolution — это легкость установки дополнений в сайте. В Evolution вам нужно было закачать архивный zip файл, залить файлы на хостинг и потом скопировать и вставить код куда необходимо. То теперь все это делается автоматически в пару щелчков мышью.
В менеджере нажмите System и в выпадающем меню выберите Package Management. В возникщей странице вы можете выбрать управлять вашими дополнениями или пакетами, добавить новый, установить загруженый и так далее. В данный момент наш список пуст, так как мы не закачивали никаких дополнений на наш сайт. Чтобы добавить дополнение, нажмите Download Extras
Откроется станица, на которой будут показаны последние и наиболее популярные дополнения справа и браузер дополнений (пакетов) слева.
Как вы видите, доступные дополнения, которые вы можете загрузить на ваш сайт, делятся на 5 категорий:
- MODX Addons (адонны)– это функциональные куски, которые не являются частью ядра MODX, такие как галереи, построители меню, теговые сниппеты и другое. Они не изменяют ядро, а просто добавляют функциональность.
- Core Extensions (расширения ядра) – это дополнения к самому ядру, которые изменяют работу MODX. Они изменяют работу частей ядра.
- FrontEnd Templates (шаблоны фронт-энда)– это готовые к использованию шаблоны сайта сделанные в виде пакетов для быстрой установки. Если вы хотите построить/установить свой собственный шаблон можете воспользоватся этими и изменять их как угодно.
- Manager Templates (шаблоны админки) – это backend шаблоны для изменения вида вашего менедзжера, это повлияет только на внешний вид, но не на функции вашего менеджера.
- Site Packages (пакеты сайта) – это уже построенные полные сайты, которые вы можете установить и исследовать. Это просто отличный способ установить демо MODX сайт и увидеть как он работает. Демо сайт может быть также отличным материалом для изучения инструментов, так как вы можете в нем посмотреть как реализованная та или иная функциональность.
Не бойтесь изучить самостоятельно все эти категории и исследовать доступные пакеты. Во время написания этого урока наиболее богатой на пакеты была категория MODX Addons и именно в ней мы будем брать используемые в дальнейшем пакеты.
Устанавливается адонн/дополнение/пакет очень просто. Например, мы хотим установить текстовый редактор rich text editor (RTE), все что нам нужно сделать — это нажать на папке MODX Addons, развернуть ее, найти в списке и нажать на Text Editors, далее просто выбрать из списка необходимый нам редактор.
Вы можете узнать подробнее о пакете нажав Details или нажимайте сразу на Download для загрузки. После успешной загрузки дополнения, кнопка Download меняется на Downloaded. Вы можете загрузить еще парочку необходимых пакетов, далее нажимаете внизу кнопку Finish
Она выводит вас обратно в менеджер пакетов, где вы можете теперь установить необходимые загруженые дополнения для дальнейшего использования.
Установщик попросит вас согласится с лицензией и далее установит пакет, далее нажимаете ОК, если не появилось сообщений об ошибках или проблемах и возвращаемся на страницу управления пакетами, которая покажет эти пакеты как установленные. Как видно у нас появилась кнопка Uninstall для деинсталяции. Дополнительно под списком плагинов видно только что установленный новый адонн.
Все просто. Правда?
Короткая заметка для пользователей XAMPP, если у вас появились проблемы при установке дополнений, проверте включен ли параметр cURL в вашей установке XAMPP.
Выводы.
В этом уроке мы немного расмотрели менеджер MODX Revolution, посмотрели коротко как изменять системные настройки сайта. Также рассмотрели как устанавливать дополнения из репозитория MODX.
Зная эти базовые моменты, можно спокойно продолжать изучение и они нам понадобятся потом, когда будем добавлять функциональность в наш сайт.
Скоро новый урок!
В следующем уроке мы добавим парочку страниц к нашему вебсайту и далее начнем строить шаблон для него. Мы не будем использовать уже построенные шаблоны MODX из репозитория, вместо этого мы используем HTML/CSS шаблон и портируем его в MODX Revolution, используя возможность изучить синтаксис MODX Revolution.
Если есть какие-то идеи/комментарии/поправки — не стесняйтесь комментировать.
Полезные материалы:
modx.ws