Чанки

Чанк в Evolution - это небольшой кусок HTML-кода или другой информации, который можно многократно использовать в шаблоне, другом чанке или сниппете.

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

Вариант 1

Чанк создаётся для любого куска кода, который будет использоваться несколько раз. Например, можно вынести шапку, подвал, основное меню, крошки. Благодаря этому изменения можно вносить в одном чанке, а не нескольких шаблонах. Это проще и нет риска оставить какой-то шаблон без важного изменения.

Вариант 2

Второе наиболее частое использование чанка - шаблоны для сниппетов. Благодаря этому происходит разделение управляющего кода и оформления. В зависимости от сложности сниппета количество чанков-шаблонов может отличаться. Например для создания формы обратной связи может потребоваться 3 основных шаблона - форма, текст об успешном приеме формы, текст письма администратору с полученной информацией. Для того, чтобы чанк был не просто куском HTML-кода, а работал как шаблон, необходимо отметить в нем соответствующие места, куда сниппет запишет свою информацию. Роль таких мест выполняют плейсхолдеры.

Пример содержимого чанка с плейсхолдерами:

<li [+wf.classes+]>[+wf.linktext+]</li>

Это шаблон, который используется для пунктов меню. Соответственно [+wf.classes+] и [+wf.linktext+] - плейсхолдеры, которые будут заменены сниппетом Wayfinder на используемый CSS-класс и название пункта меню.

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

Создание и редактирование чанка

Все чанки находятся в следующем месте:

Элементы → Чанки

Для создания необходимо нажать "Новый чанк", а для редактирования существующего чанка достаточно нажать на ссылку с его названием.

Назначение полей:

Название чанка - используется для вызова чанка. Можно использовать как английский и русский язык, а также дефис и знак подчеркивания. Пробел использовать нельзя!

Описание - выводится рядом с названием чанка в общем списке. Используется только для описания назначения чанка и для заполнения не обязательно.

Создать категорию - позволяет выбрать существующую категорию, в которую будет помещен чанк. Категория позволяет отделить чанк от остальных в общем списке. Если ни одна категория не выбрана, то чанк попадет в общую категория "Без категории".

Новая категория - если в списке существующих категорий нет подходящей, то можно создать ее, просто написав название в этом поле.

Ограничить доступ к редактированию чанка - если включить флажок, то никто, кроме администраторов, не сможет редактировать этот чанк.

Код чанка (html) - сюда размещается само содержимое чанка.

Редактор - позволяет выбрать визуальный редактор. По умолчанию он отключен, но при необходимости можно включить. Есть также редакторы, которые позволяют подсветить синтаксис.

Сохранение

С основными кнопками все понятно:

Сохранить - создаст новый чанк

Отмена - вернет нас в список чанков без сохранения результата.

Сделать копию - появляется только в режиме редактирования.

Удалить - появляется только в режиме редактирования.

Evolution позволяет определить еще действия после сохранения чанка:

Создать новый - сразу после сохранения чанка откроется форма для создания нового. Таким образом можно быстро создать серию чанков.

Продолжить редактирование - после сохранения чанк снова откроется для редактирования. В этом режиме удобно вносить небольшие правки в чанк и проверять конечный результат.

Закрыть - после сохранения мы вернемся в общий список чанков.

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

Иногда бывает необходимо создать копию существующего чанка. Сделать это очень просто. Для этого необходимо зайти в редактирование нужного чанка и нажать на кнопку "Сделать копию".

После этого откроется для редактирования копия чанка. Копия отличается тем, что к ее названию добавляется строка "Duplicate of ...". Вам остается только исправить название на более подходящее и внести другие необходимые правки.

Копия создается сразу после подтверждения, поэтому если вы нажмете отмену, то в списке чанков копия все равно останется.

Удаление чанка

Для удаления необходимо зайти в режим редактирования соответствующего чанка и нажать кнопку Удалить. Внимание! Чанки удаляются полностью и возможности их восстановить нет.

Вызов чанка

Существующий чанк в шаблоне (или другом чанке) вызывается очень просто. Для этого используется конструкция в виде названия чанка окруженного фигурными скобками:

{{НазваниеЧанка}}

Вызов чанка с параметрами

Начиная с Evolution 1.4.0 в чанки можно передавать параметры.

{{mychank? &firstparam=`value` &secondparam=`value2`}}

Внутри чанка переданные параметры можно получить вызовом одноимённого плейсхолдера.

[+firstparam+] и [+secondparam+]

Стоит помнить, что название чувствительно к регистру (Mychank и myChank - разные чанки с точки зрения системы).

Пример шаблона с вызовом чанка:

<html>
    <head>
        {{Head}}
    </head>
    <body>
        {{menu}}
        <div class="outer">
            <div class="main">
                {{content}}
            </div>
        </div>
    {{footer}}
    </body>
</html>

Этот пример шаблона содержит только чанки, но на практике в нем также встречаются TV-параметры и сниппеты. Поэтому не стоит предполагать, что чанки использовать необходимо обязательно и в большом количестве.

API

Для получения содержимого чанка через API используется метод getChunk.

Пример вызова:

$chunk = $modx->getChunk('НазваниеЧанка');

FAQ

Я сделал чанк, но он не работает. Из-за чего это может быть?

Проверьте название чанка. Оно не должно содержать пробела, а регистр букв при вызове точности должен совпадать с названием чанка.

Можно ли вызывать чанк в чанке?

Да.