Pull to refresh

MODx. Базовые вещи

Reading time 4 min
Views 39K
Любой, кто начнет разбираться в MODx столкнется с новыми терминами. Все довольно просто запоминается. А чтобы не приходилось запоминать, что и как пишется, мы все отметим здесь.

Также здесь мы отметим небольшие моменты, которые периодически можно подсматривать.



Терминология


Шаблон – содержит общую верстку страницы со структурой и дизайном. Также в нем определяются места для вывода динамического содержимого. Для каждого документа можно выбрать свой шаблон.

Параметры (TV) – дополнительные параметры, которые подключаются к шаблону. Параметры могут быть разных типов (текст, ссылка, файл, дата, число и т.д.). Более подробно о типах ждите в следующих статьях.

Чанк – маленький шаблон, который может использоваться как просто для вывода какого-то содержимого (телефона на всех страницах), так и для обработки (шаблон отправляемого письма eForm, шаблон каталога выводимого Ditto и т.д.). Таким образом, вид (представление) информации отделяется от места обработки и легко управляется.

Сниппет – код для обработки информации. Анализируют полученную информацию (например, сообщение пользователя) и предоставляют результат (например, отправляют сообщение по почте, а пользователю показывают сообщение о результате). Сниппеты формируют меню (Wayfinder), выводят списки статей с разбиением на страницы (Ditto), строят формы (eForm). Для вывода используют Чанки.

Плагин – код, который запускается при наступлении какого-то события. Например, подсвечивает искомые слова (Search Highlighting) при переходе со страницы поиска. Событий много и их рассмотрение стоит отдельной статьи.

Специальные теги


Для вывода динамических данных используются специальные теги.

Системные


[(site_name)] – название сайта
[(base_url)] или [(site_url)] – адрес сайта (http://modx.ru)
[(modx_charset)] – используемая кодировка
[^qt^] – время на запросы к базе данных
[^q^] – запросов к базе данных
[^p^] – время на работу PHP скриптов
[^t^] – общее время на генерацию страницы
[^s^] – источник содержимого (база или кэш)

Стандартные


[*pagetitle*] – заголовок документа
[*longtitle*] – расширенный заголовок документа
[*description*] – описание документа
[*introtext*] – аннотация документа
[*content*] – содержимое документа
[*alias*] – псевдоним документа
[*id*] – идентификатор (номер) документа
[*pub_date*] – дата публикации дкоумента
[*unpub_date*] – дата завершения публикации
[*createdby*] – Идентификатор пользователя создавшего документ
[*createdon*] – Дата создания документа
[*editedby*] – Идентификатор пользователя редактировавшего документ
[*editedon*] – Дата редактирования документа
[~идентификатор~] – URL указанного документа

Дополнительные


[*type*] – вариант (документ, папка или ссылка)
[*contentType*] – тип содержимого (например, text/html)
[*published*] – опубликован ли документ (1|0)
[*parent*] – номер (ID) родительского документа
[*isfolder*] – является ли документа папкой (1|0)
[*richtext*] – используется ли при редактировании документа визуальный редактор
[*template*] – номер (ID) используемого шаблона для документа
[*menuindex*] – порядковый номер отображения в меню
[*searchable*] – доступен ли документ для поиска (1|0)
[*cacheable*] – Кэшируется ли документ (1|0)
[*deleted*] – Документ удален (1|0)
[*deletedby*] – Идентификатор пользователя удалившего документ
[*menutitle*] – Заголовок меню. Если не используется, то заголовок документа
[*donthit*] – Слежение за количеством посещений отключено (1|0)
[*haskeywords*] – Документ содержит ключевые слова (1|0)
[*hasmetatags*] – Документ имеет метатеги (1|0)
[*privateweb*] – Документ входит в частную группу пользовательских документов (1|0)
[*privatemgr*] – Документ входит в частную группу менеджерских документов (1|0)
[*content_dispo*] – Вариант выдачи содержимого (1 — для отображения | 0 — для скачивания)
[*hidemenu*] – Документ не отображается в меню (1|0)

Параметры TV, сниппеты и чанки


[*НазваниеПараметраTV*] – выводит значение параметра в документе.
{{НазваниеЧанка}} – возвращает содержимое чанка.
[[НазваниеСниппета]] – возвращает результат работы сниппета. Также можно передавать сниппету дополнительные параметры, перечисляя их при вызове — [[НазваниеСниппета? &параметр1=`значение1` &параметр2=`значение2` &параметрN=`значениеN`]
[+НазваниеПеременной+] – встречается в чанках, которые используются для обработки (Ditto, eForm и т.д.). После обработки вместо них вставляются значения. Таким образом, это тоже вроде мини-языка, но для сниппетов.

Нюансы



1) На самом деле есть два варианта вызова сниппета:
[[НазваниеСниппета]] – кэшируемый вызов сниппета
[! НазваниеСниппета!] – некэшируемый вызов сниппета

2) При использовании дополнительных параметров в сниппете нужно убедиться, что запись не разбивается переносом строки. Если это так, то сниппет откажется работать.

Где использовать



Все очень гармонично используется друг с другом.
В шаблонах можно использовать параметры TV, сниппеты и чанки.
В чанках можно вызывать сниппеты, параметры TV и другие чанки.
В сниппетах можно вызывать вообще все, но через PHP.
В конечном счете вам вернется итоговый результат обработки всех сниппетов/чанков/параметровTV.

Пример шаблона



<html>
<head>
<title>[(site_name)] | [*pagetitle*]</title>
<meta http-equiv=«Content-Type» content=«text/html; charset=[(modx_charset)]» />
<base href="[(site_url)]"></base>
<link rel=«alternate» type=«application/rss+xml» title=«RSS 2.0» href="[(site_url)][~11~]" />
</head>
<body>

<div id=«header»>
<h1><a id=«logo» href="[~[(site_start)]~]" title="[(site_name)]">[(site_name)]</a></h1>
<div id=«ajaxmenu»> [[Wayfinder?startId=`0` &outerTpl=`mh.OuterTpl` &innerTpl=`mh.InnerTpl` &rowTpl=`mh.RowTpl` &innerRowTpl=`mh.InnerRowTpl` &firstClass=`first` &hereClass=``]] </div>
</div>

<h2>News:</h2>

[[Ditto? &startID=`2` &summarize=`2` &total=`20` &commentschunk=`Comments` &tpl=`nl_sidebar` &showarch=`0` &truncLen=`100` &truncSplit=`0`]]

<div id=«content»>
<h2>[*longtitle*]</h2>
[*#content*]
</div>

</body>
</html>


На эту информацию опирается все остальное.
Tags:
Hubs:
+4
Comments 23
Comments Comments 23

Articles