Что такое чанк

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

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

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

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

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

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

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

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

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

    Ресурсы → Управление ресурсами → Чанки Список чанков выглядит примерно так:

    Список чанков в MODX EVO

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

    Новый чанк в MODX EVo

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

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

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

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

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

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

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

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

    Сохранение

    Обратим внимание на возможности при сохранении. Для этого есть следующие управляющие кнопки:

    Управление чанком в MODX EVO

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

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

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

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

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

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

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

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

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

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

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

    Управление чанком в MODX EVO

    На всякий случай система попросит от вас подтверждение:

    Копия чанка в MODX EVO

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

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

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

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

    Управление чанком в MODX EVO

    После этого система попросит от вас подтверждение:

    Внимание! Чанки удаляются полностью и возможности их восстановить нет.

    Вызов чанка

    В шаблоне и другом чанке

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

    {{НазваниеЧанка}} При этом стоит помнить, что название чувствительно к регистру (НазваниеЧанка и названиеЧанка - разные чанки с точки зрения MODx).

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

    {{Head}} {{ОсновноеМеню}} {{Поиск}}
    {{Содержимое}}
    {{Подвал}} {{Google}}

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

    Через API

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

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

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

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

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

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

    Да.