MODX CMS
MODX — это бесплатная профессиональная система управления содержимым (CMS) и фреймворк для веб-приложений. Вы получаете открытый код, админку из коробки с возможностью устанавливать и самостоятельно писать шаблоны, плагины и различные модули. Я расскажу кратко о том как этой системой пользоваться.
Обычный сайт состоит из страниц, в MODX они называются ресурсами. При создании нового ресурса по умолчанию вы задаете название страницы, заглавное изображение, описание, пункт меню и т.д. Здесь Вам обязательно нужно указать шаблон, который будет использовать Ваша страница. Список всех шаблонов указан в элементах. Шаблон — это простой код html, с помощью которого вы указываете где на вашей странице выводится оглавление, где контент и т.д. К каждой странице необходимо подключить по одному шаблону (не больше). При создание шаблона к элементам ресурса страницы вы обращаетесь по определенному названию:
Название в ресурсе | MODX evo | MODX Revo |
Hазвание страницы | [*pagetitle*] | [ [*pagetitle] ] |
Аннотация | [*introtext*] | [ [*introtext] ] |
Контент | [*content*] | [ [*content] ] |
Как видите, в версиях MODX — Evolution(1) и Revolution(2) вывод немного отличается.
Вот пример простого шаблона на mod-x evolution с выводом названия, изображения и контента:
<!DOCTYPE html>
<html lang="ru">
<head>
{{header}}
</head>
<body>
<div> class="my">
<h1>[*pagetitle*]</h2>
<img src="[*pageimg*]">
<p>[*content*]</p>
</div>
{ {footer} }
</body>
</html>
Здесь вы видете вот такие страшные символы { { header } } и { { footer } } — это чанки. Чанки — это куски кода, которые мы подключаем к шаблону, а вызываются они как раз при помощи таких кавычек в MODX evo и так [ [ $ header ] ] в MODX Revo. Например, здесь в header будут подключены все необходимые файлы для отображения страницы, а в футере, например ссылки на соц. сети и обратная звязь. { {header} } и { {footer} } будут на всех страницах одинаковые, поэтому мы их выносим в отдельные чанки и будем вызывать в каждом шаблоне.
Ресурсы можно обьединять как нам угодно, групировать в группы, например у одного ресурса может быть несколько дочерних. В таких случаях на родительском ресурсе часто удобно кратко отображать информацию с дочерних ресурсов. Для вывода, например оглавления внутреннего ресурса нам необходимо написать не [ * pagetitle * ] — это будет теперешний ресурс, а [ + pagetitle + ], а для MODX Revo соответственно [ [ + pagetitle] ].
Порой нам необходимо вывести информацию не с дочернего ресурса, а с соседнего. Здесь нам понадобится такая деталь, как ID. Обратите внимание, что возле каждого элемента, будь то ресурс, шаблон либо чанк у нас в скобках стоит число — это и есть ID элемента. У каждого элемента свой номер, если вы видете на ресурсе ID=1, то знайте, ни на каком другом элементе, будь то чанк либо шаблон либо что-то другое, не может быть такого же ID! Так же в реализации этого нам поможет сниппет Ditto. Снипеты — это чистый php код, который обеспечивает динамическую логику. Вот прмиер вызова снипета:
[[ Ditto? & tpl=`smth`&startID=`5`&display=`3`& dateSource=`pub_date`& dateFormat=`%d.%m.%Y`& sortBy=`pub_date`]]
Как Вы поняли, вызываем мы снипет Ditto для вывода содержимого соседних ресурсов.
& tpl=`smth` — указывает на чанк-обработчик даного запроса. В чанке smth указано что конкретно выводить и в каком виде.
& startID=`5`— начинаем выводить со всех ресурсов у которых ID=5 (не включая их дочерние ресурсы!)
&dateSource=`pub_date`&dateFormat=`%d.%m.%Y`& sortBy=`pub_date` — сортируем по дате публикации и указываем формат даты.
Так же ID очень удобно использовать, когда нам на родительском элементе нужно вывести информацию с дочерних и ссылки для перехода на них:
<a href="[~[+id+]~]">Ссылка на [+pagetitle+]</a>
Прописываем вызов чанка с таким содержимым в шаблоне при помощи Ditto и этот чанк будет обрабатываться столько раз, сколько у нашего ресурса дочерних ресурсов, и соответственно столько ссылок мы получим.
Как Вы видете в списке много снипетов уже из коробки, так что я небуду описывать как работать с каждым из них. Это с легкостью можно найти) А вызываться они в шаблонах либо чанках будут абсолютно одинаково — в MODX evo [ [ Снипет? параметры ] ] или [ ! Снипет? параметры ], а в MODX Revo — [ [ ! Снипет? параметры ] ].
Так же в меню админки mod-x вы можете увидеть еще плагины и модули. Плагины — это интерактивные PHP-скрипты, запускающиеся при наступлении события, которое они отслеживают. Модуль — это приложение, основанное на архитектуре MODX и расширяющее возможности системы управления. Модули Вы можете устанавливать самостоятельно, их для MODX очень много и реализуют они совершенно разные функции, а устанавливаются и используются в принципе так же как и в других CMS системах.
Что я еще не рассказала, так это TV-параметры. Они нужны когда у Вас не хватает стандартных полей ввода на ресурсе, например на ресурсе есть одно поле для картинки, а Вам нужно вывести две. Тогда создаем TV-параметр, с названием, например img2, выбирем шаблон, к которому будет прикреплен наш параметр. Обращаться к img2 так же как и к остальным элементам ресурса, а именно [* img2 *] либо [ [* img2] ].
Что еще стоит отметить, так то что контент ресурсов сохраняется в базе, как и название шаблона, который они используют, а код шаблона, чанков, снипетов и т.д у Вас в кодах, а именно в папочке /assets.