Чанк в Evolution - это небольшой кусок HTML-кода или другой информации, который можно многократно использовать в шаблоне, другом чанке или сниппете.
Чанк создаётся для любого куска кода, который будет использоваться несколько раз. Например, можно вынести шапку, подвал, основное меню, крошки. Благодаря этому изменения можно вносить в одном чанке, а не нескольких шаблонах. Это проще и нет риска оставить какой-то шаблон без важного изменения.
Второе наиболее частое использование чанка - шаблоны для сниппетов. Благодаря этому происходит разделение управляющего кода и оформления. В зависимости от сложности сниппета количество чанков-шаблонов может отличаться. Например для создания формы обратной связи может потребоваться 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 используется метод getChunk.
$chunk = $modx->getChunk('НазваниеЧанка');
Я сделал чанк, но он не работает. Из-за чего это может быть?
Проверьте название чанка. Оно не должно содержать пробела, а регистр букв при вызове точности должен совпадать с названием чанка.
Можно ли вызывать чанк в чанке?
Да.