Что же собой представляет чанк?
Чанки это кусочки некоторого статического текста, которые применяются на сайте, подобно функции подключения файлов или же блоков в иных CMS. Примером чанка может быть ваша любая контактная информация или же копирайты. Хоть чанки не могут располагать логикой непосредственно, они имеют все шансы однако располагать вызовом сниппетов которые содержат в себя кусочки PHP кода который дополняет динамику.Создание чанков
Перед тем как использовать чанк вам нужно создать его, дать ему имя и заполнить содержимое в менеджере MODx (Элементы -->Чанки --> Новый чанк)Применение чанков
Что бы активировать чанк, вызовите его по имени в шаблоне или же в контенте на страничке.<code>[[$chunkName]]</code>Данный тег будет заменен содержимым чанка. у вас есть возможность добавления свойств для чанка. Вы можете сформировать чанк intro в котором есть следующая строка
<code>Hello, [[+name]].You have [[+messageCount]] messages.</code>Задаем значения:
<code> [[$intro? &name=`George` &messageCount=`12`]]</code>В итоге на странице мы получимHello, George. You have 12 messages.Вызываем чанк применяя взамен значений Переменные шаблона, которые прибавляются к ресурсу.
<code>[[!$intro? &name=`[[*usersName]]` &messageCount=`[[*messageCount]]`]]</code>или вызывать их непосредственно из чанка
<code>Hello, [[*usersName]]. You have [[*messageCount]] messages. </code>
Обработка чанка через API
Чанки зачастую применяются для формирования выходных результатов Снипета. Чанк можно обработать из снипета применяя функцию process. Например дадим чанку имя 'rowTpl'<code><tr class="</code>
<code>[[+rowCls]]</code>
<code>" id="row</code>
<code>[[+id]]</code>
<code>"> <td></code>
<code>[[+pagetitle]]</code>
<code></td> <td></code>
<code>[[+introtext]]</code>
<code></td> </tr></code>Снипет, код которого находится ниже извлекает его и потом обрабатывает с массивом свойств которые нужны для публикации в ресурсе, а потом возвращает форматированные результаты как таблицу с классом 'alt' для каждой строки
<code>$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 ''.$output.'';</code>
Изменение чанка через 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('This is my new chunk!');
$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('This is my existing chunks new content!');
$chunk->save();
}
/* get an existing chunk and delete it from the database */
$chunk = $modx->getObject('modChunk', array('name' => 'MyObsoleteChunk'));
if ($chunk) $chunk->remove();
?>