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

Тема в разделе "MODx", создана пользователем CyberWarring, 8 окт 2012.

  1. CyberWarring

    CyberWarring

    Регистрация:
    8 окт 2012
    Сообщения:
    15
    Симпатии:
    8
    Перед использованием чанка, вы должны создать его и придумать название, делается это в админке правой кнопкой мыши нажимаем на чанки и создаем новый чанк:

    [​IMG]

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

    Для использования чанка вы пишете ссылку на него в ваших шаблонах или на странице сайта. Формат ссылки:
    Код:
    [[$chunkName]]
    
    Эта ссылка заменяется содержимым чанка.
    Также вы можете передавать свойства чанку. Скажем есть у вас чанк ‘intro’ с содержимым:
    Код:
    Привет, [[+name]]. У тебя [[+messageCount]] сообщений.
    
    Вы можете придать значения свойствам чанка следующим образом:
    Код:
    [[$intro? &name=`blabla` &messageCount=`12`]]
    
    На выходе будем иметь запись:
    Привет, blabla. У тебя 12 сообщений.
    Можно также немного пойти вперед и использовать переменную шаблона, которая позволяет пользователю определять имя ресурса.
    Код:
    [[!$intro? &name=`[[*usersName]]` &messageCount=`[[*messageCount]]`]]
    или в чанке самом по себе
    Код:
    Привет, [[*usersName]]. У вас [[*messageCount]] сообщений.
    Обработка чанка через 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();
    ?>