Оглавление

Чанки — это кусочки статического текста, которые вы можете повторно использовать на своем сайте. Хотя чанки не могут содержать никакой логики напрямую, тем не менее, они могут содержать вызовы сниппетов, которые представляют собой исполняемый PHP код, который в свою очередь производит динамический вывод данных.

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

Прежде чем использовать чанк, вы должны сначала создать его и дать ему имя. Перейдите во вкладку дерева «Элементы», выберите «Чанки», затем «Новый чанк» или «Быстро создать чанк».

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

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

Для использования чанка, вам необходимо обратиться к нему по его имени:

[[$chunkName]]

Этот плейсхолдер заменится содержимым чанка.

Вы также можете передать свойства в чанк. Скажем, у вас был фрагмент с именем intro и содержимым:

Привет, [[+name]]. У вас [[+messageCount]] непрочитанных сообщений.

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

[[$intro? &name=`Аркашка` &messageCount=`7`]]

В итоге вы увидите следующий вывод:

Привет, Аркашка. У тебя 7 непрочитанных сообщений.

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

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

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

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

<?php
$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 MODx:

<?php
/* Создаем новый чанк, заполняет небольшим контентом и сохраняем в базу данных */
$chunk = $modx->newObject('modChunk');
$chunk->set('name','NewChunkName');
$chunk->setContent('<p>Это мой новый чанк!</p>');
$chunk->save();

/* Получаем существующий чанк по его имени, меняет контент и сохраняем в базу данных */
$chunk = $modx->getObject('modChunk', array('name' => 'MyExistingChunk'));
if ($chunk) {
    $chunk->setContent('<p>Это уже существующий чанк с новым контентом!</p>');
    $chunk->save();
}

/* Получаем  существующий чанк по его имени и удаляем его из базы данных */
$chunk = $modx->getObject('modChunk', array('name' => 'MyObsoleteChunk'));
if ($chunk) $chunk->remove();