MODx. Основное

MODx является достаточно гибкой, несложной в освоении (конечно если есть базовые знания html/css/php), мощной, расширяемой системой управления контентом сайта. Немножко о самой системе.
Ну во первых существует две ветки развития данной cms, это MODx evolution и MODx revolution, которые в программерском просторечии ласково называют "evo" и "revo" (или "ева" и "рева"). Еще одна интересная особенность в названии это то, как учит нас называть данную систему Википедия -- "модэ́кс", хотя именно такого произношения я не слышал ни разу. Ее зовут скорее "мод икс", как два раздельных слова, делая ударение на обоих слогах.
Итак, для начала общие, очевидные сведения для обоих систем (то бишь для "евы" и для "ревы", есть еще и третья, но о ней поговорим немножко позже).

Общее:

Система написана на PHP, может использовать для работы базы данных MySQL и MS SQL. Примечательно то (раз уж мы упомянули о базах данных), что ни шаблоны, ни сами страницы MODx не хранит в виде документов, все забивается в базу, вернее почти все. Непосредственно на сервере хранятся подключаемые извне файлы (т.е.  css-стили, js-скрипты, картинки).

Кратко об основных понятиях MODx:

  • Шаблон -- понятие не отличается от привычного понятия шаблона. Разница лишь в том, что шаблон хранится не на сервере в файле *.html или *.php, а через админку целиком забивается в базу данных, о чем говорили выше.
  • Чанк -- осмысленный кусок html-кода, вызываемый в шаблоне. Если на понятном языке, то всю статическую часть кода шаблона (например шапку сайта или подвал) мы можем засунуть в контейнер, именуемый чанком, сохранить, и в последствии вызывать из любого шаблона нашего сайта. Достаточно в шаблоне прописать {{имя_чанка}} для MODx evolution или [[$имя_чанка]] для MODx revolution.
  • Сниппет -- законченный по смыслу PHP код. Может быть любой сложности -- от очень простого, до очень сложного. Используется для создания динамических элементов сайта (динамически обновляемое меню, хлебные крошки, комментарии на странице и т. д.). Сниппеты могут содержать в себе дополнительные параметры, которые задаются при вызове. Различают кешируемый вызов сниппета и некешируемый вызов сниппета. Сами сниппеты можно вызывать как в шаблонах, так и в чанках. А  в самих сниппетах вообще можно вызывать все, но, соответственно, в PHP коде. Вызов в MODx evolution -- [[имя_сниппета]] (кешируемый вызов) и [[!имя_сниппета!]] (некешируемый вызов). Для MODx revolution -- [[имя_сниппета]] и [[!имя_сниппета]] соответственно.
  • TV (template variables) -- переменная шаблона, или как ее еще называют некоторые -- "телевизор". Позволяет добавить документу дополнительную информацию. Синтаксис MODx evolution -- [*имя_TV*], синтаксис MODx revolution -- [[*имя_TV]].
  • Плейсхолдер -- он же подстановщик. Используется для вывода параметров, вернее определяет место вывода результата работы сниппета, плагина или модуля. Для MODx evolution -- [+имя_плейсхолдера+], для MODx revolution -- [[+имя_плейсхолдера]].
Думю, что этих понятий на первое время хватит выше крыши. Однако считаю необходимым поговорить о специальных, предустановленных тегах MODx. Их достаточно много, и они достаточно полезны (по крайней мере часть). Их и рассмотрим.

Предустановленные переменные сайта и шаблона:

Название MODx evo MODx revo
Заголовок ресурса [*pagetitle*] [[*pagetitle]]
URL сайта [(base_url)] [[++site_url]]
Имя сайта [(site_name)] [[++site_name]]
Кодировка системы [(modx_charset)] [[++modx_charset]]
Описание ресурса (meta) [*description*] [[*description]]

Хотел еще добавить переменную keywords, но вовремя вспомнил, что она уже неактуальна, ибо поисковикам до нее нет дела. Это самое основное, остальное при желании можно нарыть в интернете. Упомяну лишь, что для MODx evolution системные теги заключаются в [(имя_тега)], а стандартные теги в [*имя_тега*]. Для MODx revolution [[++имя_тега]] и [[*имя_тега]] соответственно.

Кратко о принципе работы (ну или вернее о принципе создания сайта):

И в "еве" и в "реве" работа по созданию сайта реализуется принципиально похожим образом, разница лишь в синтаксисе систем, о нем мы говорили выше.

  1. Создаем новый шаблон. Озаглавливаем его, копируем html-код приготовленного заранее шаблона для будущего сайта и вставляем его в поле "Template code (html):" (по-русски что-то вроде кода шаблона).
  2. Копируем все необходимые файлы (css, js, jpg) на сервер в отдельную папочку, я использую папку templates в корне сайта.
  3. В нашем шаблоне меняем пути стилей, js-скриптов и картинок так, чтобы они соответствовали загруженным на сервер файлам.
  4. Разбиваем наш шаблон на части, вырезаем их, вставляем в чанки, а вызов чанков, естественно, на место вырезанного кода. Сохраняем шаблон.
  5. Открываем единственный (пока что) созданный документ, отображаемый по умолчанию, даем ему заголовок, вписываем контент. В шаблоне, в месте, где контент должен вывестись вставляем [*content*] для евы и [[*content]] для ревы. Не забываем поставить галочку для публикации.
  6. Открываем наш сайт и наслаждаемся выводом первой страницы.