Elements

Любой, кто начнет разбираться в Evolution, столкнется с новыми терминами.

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

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

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

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

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

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

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

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

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

Системные

  • [(site_name)] - название сайта
  • [(base_url)] или [(site_url)] - адрес сайта (https://www.evolutioncms.org)
  • [(modx_charset)] - используемая кодировка
  • [(lang_code)] - код языка, используемого на сайте
  • 3.75 mb - количество использованной памяти
  • 0.0031 s - время на запросы к базе данных
  • 3 - количество запросов к базе данных
  • 0.0406 s - время на работу PHP скриптов
  • 0.0437 s - общее время на генерацию страницы
  • cache - источник содержимого (база или кэш)

Стандартные

  • [*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\*] - выводит значение параметра в документе.
{{НазваниеЧанка}} - возвращает содержимое чанка.
[[название сниппета]] - возвращает результат работы сниппета. 

Можно передавать сниппету дополнительные параметры, перечисляя их при вызове. Допустим, если мы хотим получить id текущего документа и обработать его в сниппете, то вызов может быть похож на этот:

[[название сниппета?docId=`[+id+]`]]

[+НазваниеПеременной+] - плейсхолдер - встречается в чанках, которые используются для обработки результатов работы сниппетов. После обработки вместо них вставляются значения. В примере выше вы видите, как в параметр docId для сниппета мы подставили системный плейсхолдер [+id+], в котором будет id текущего документа. Плейсхолдеры можно создавать самому.

Нюансы

На самом деле есть два варианта вызова сниппета:

  1. [[название сниппета]] - кэшируемый вызов сниппета
  2. [!НазваниеСниппета!] - некэшируемый вызов сниппета

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

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

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

<!DOCTYPE html>
<html lang="[(lang_code)]">
{{head_tags}}
<body>
    [*content*]
</body>
</html>

где head_tags это чанк со следующим содержимым:

<head>  
    <base href="[(site_url)]" />
    <meta charset="[(modx_charset)]" />
    <title>[*pagetitle*] / [(site_name)]</title>
</head>

А в поле [*content*] будет выведено содержимое страницы, заданное из админки. На эту информацию опирается все остальное.

Mem: 3.75 mb, MySQL: 0.0031 s, 3 req., PHP: 0.0406 s, all: 0.0437 s, cache.