Чанки

Создание чанка

Перед использованием чанка, вы должны создать его и придумать название, делается это в админке правой кнопкой мыши нажимаем на чанки и создаем новый чанк:

Создание чанка в MODx Revolution

Использование

Для использования чанка вы пишете ссылку на него в ваших шаблонах или на странице сайта. Формат ссылки:

[[$chunkName]]

Эта ссылка заменяется содержимым чанка.
Также вы можете передавать свойства чанку. Скажем есть у вас чанк ‘intro’ с содержимым:

Привет, [[+name]]. У тебя [[+messageCount]] сообщений.

Вы можете придать значения свойствам чанка следующим образом:

[[$intro? &name=`Жора` &messageCount=`12`]]

На выходе будем иметь запись:

Привет, Жора. У тебя 12 сообщений.

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

[[!$intro? &name=`[[*usersName]]` &messageCount=`[[*messageCount]]`]]

или в чанке самом по себе

Привет, [[*usersName]]. У вас [[*messageCount]] сообщений.

Офтоп: мне это напомнило Привет, %username% из д3, а вам?

Обработка чанка через API

Чанки часто используются для форматирования вывода сниппетов. Чанк может быть образован из снипета с помощью функции process(); Например, возмем чанк ‘rowTpl’:

<tr class="[[+rowCls]]" id="row[[+id]]">
<td>[[+pagetitle]]</td>
<td>[[+introtext]]</td>
</tr>

следующий снипет извлекает его и обрабатывает вместе с массивом свойств для всех опубликованых ресурсов и возвращает отформатированные в виде таблицы результаты устанавливая класс «alt» для парных строк:

$resources = $modx->getCollection('modResource',array('published' => true));
$i = 0;
$output = '';
foreach ($resources as $resource) {
$properties = $resource->toArray();
$properties['rowCls'] = $i % 2 ? '' : 'alt';
$output .= $modx->getChunk('rowTpl',$properties);
$i++;
}
return '<table><tbody>'.$output.'</tbody></table>';

Изменение чанка с помощью API

Чанками можно манипулировать с помощью MODx API:

<?php
/* create a new chunk, give it some content and save it to the database */
$chunk = $modx->newObject('modChunk');
$chunk->set('name','NewChunkName');
$chunk->setContent('<p>This is my new chunk!</p>');
$chunk->save();
/* get an existing chunk, modify the content and save changes to the database */
$chunk = $modx->getObject('modChunk', array('name' => 'MyExistingChunk'));
if ($chunk) {
$chunk->setContent('<p>This is my existing chunks new content!</p>');
$chunk->save();
}
/* get an existing chunk and delete it from the database */
$chunk = $modx->getObject('modChunk', array('name' => 'MyObsoleteChunk'));
if ($chunk) $chunk->remove();
?>

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

В MODx Revolution каждая страница всегда имеет следующие поля для вывода контента, которые вы можете использовать при создании своих шаблонов. Кроме как для ID источников (ресурсов) и полей предка, они задаются пользователем при редактировании ресурса и могут быть просто пустыми если пользователь их не заполнил:

ТегОписаниеПримеры использования
[[*id]] ID ресурса страницы (устанавливается MODx при создании страницы) Часто используется в сочетании с ссылкой: <a href="[[~[[*id]]]]">Ссылка на эту страницу!</a>
[[*pagetitle]] Название страницы <title>[[*pagetitle]]</title>
[[*longtitle]] Длинное название страницы <h1>[[*longtitle]]</h1>
[[*alias]] Псевдоним (алиас) страницы. Используется для создания URL страницы
[[*description]] Описание страницы. <meta name="description" content="[[*description]]"/>
[[*introtext]] Аннотация страницы. Часто используется сниппетами для аннотирования постов, например, Ditto <div id="summary">[[*introtext]]</div>
[[*parent]] ID страницы-предка (если таковая существует). Устанавливается MODx при создании страницы. Может быть изменена пользователем. Часто используется вместе с ссылкой, синтаксис <a href="[[~[[*parent]]]]">Вверх к родительской странице</a>
[[*menutitle]] Название страницы в меню. Чаще всего используется такими сниппетами, какWayfinder когда необходимо создать динамическое меню.
[[*content]] Содержимое страницы. <body>[[*content]]</body>

Другие теги

Эти теги представляют собой системные настройки, которые можно отрегулировать через меню Система (System)  -> Настройки системы (System Settings).

ТегОписаниеПример использовани
[[++site_url]] Содержит URL вашего сайта, например http://www.yoursite.com/ Со многими CMS, которые опираются на разработки Apache является общей практикой включать базовый тег в хед страницы: <base href="[[++site_url]]" />
[[++site_name]] Название сайта <title>[[++site_name]] | [[*pagetitle]]</title>
[[++site_start]] Содержит ID станицы, определенной как «Главная» Часто используется в синтаксисе сочетания со ссылкой <a id="logo" href="[[~[[++site_start]]]]">Главная</a>
[[$chunk]] Это вызов чанка по имени. Чанки – это повторяемые части контента. Обычно чанками могут выступать хедер или футер.
[[~link]] Используйте такой синтаксис для построения ссылок к страницам по их уникальному id (которые можно увидеть в родительских ресурсах возле имени страницы в дереве ресурсов). Эти ссылки не ломаются, даже если страницы передвигаются или переименовываются. <a id="logo" href="[[~1]]">Главная</a>