Что такое чанки в modx
Чанки
Чанки — это кусочки статического текста, которые вы можете повторно использовать на своем сайте. Хотя чанки не могут содержать никакой логики напрямую, тем не менее, они могут содержать вызовы сниппетов, которые представляют собой исполняемый PHP код, который в свою очередь производит динамический вывод.
Оглавление
Чанки — это кусочки статического текста, которые вы можете повторно использовать на своем сайте. Хотя чанки не могут содержать никакой логики напрямую, тем не менее, они могут содержать вызовы сниппетов, которые представляют собой исполняемый PHP код, который в свою очередь производит динамический вывод данных.
Создание чанка
Прежде чем использовать чанк, вы должны сначала создать его и дать ему имя. Перейдите во вкладку дерева «Элементы», выберите «Чанки», затем «Новый чанк» или «Быстро создать чанк».
Использование чанка
Для использования чанка, вам необходимо обратиться к нему по его имени:
Этот плейсхолдер заменится содержимым чанка.
Вы также можете передать свойства в чанк. Скажем, у вас был фрагмент с именем intro и содержимым:
Вы можете заполнить эти значения следующим образом:
В итоге вы увидите следующий вывод:
Обработка чанка через API MODx
Сниппет ниже, извлекает содержимое чанка и обрабатывает его с массивом свойств для всех опубликованных ресурсов и возвращает отформатированные результаты в виде таблицы, устанавливая класс «alt» для четных строк:
Модификация чанка через API MODx
Чанками также можно управлять с помощью API MODx:
Благодарность автору
Если по какой-либо причине вы хотите поблагодарить автора данного ресурса, вы можете это сделать одним из удобных для вас способов ниже.
Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.
В этой статье рассмотрим понятие, назначение и применение чанков в MODX Revolution. Кроме этого познакомимся с тем, как выполняется обработка и управление чанками в сниппетах через API.
Что такое чанк
Например, чанк (его содержимое), который используется для вывода меню сайта:
Кроме этого чанки в MODX Revolution также используются в качестве шаблонов для вывода результатов работы сниппета.
Например, чанк (tpl.Tickets.list.row), который используется в качестве шаблона сниппета getTickets :
Внутри чанках, как и во многих других элементах MODX Revolution (шаблонах, TV-параметрах, полях ресурса), нельзя непосредственно размещать php-код. Размещение в этих элементах динамического содержимого осуществляется посредством вызовов сниппетов, которые исполняют хранящийся внутри них PHP-код.
Где хранятся чанки
Работа с чанками в админке MODX
Чанки в админке MODX Revolution расположены на левой панели во вкладке «Элементы».
Создание чанка
Кроме этого система MODX позволяет хранить содержимое чанка во внешнем файле. Для этого необходимо установить галочку в поле статичный, выбрать источник файлов и указать его расположение.
Редактирование чанка
Для редактирования некоторого чанка в админке необходимо нажать на него левой кнопкой мыши. После этого откроется форма полями чанки, в которую необходимо внести изменения и нажать на кнопку «Сохранить».
Как использовать чанки в MODX
Вставка чанка в шаблон или содержимое ресурса осуществляется с помощью следующего тега MODX:
Во время обработки страницы, парсер MODX заменит тег чанка его содержимым.
Чанк и его параметры
Чанки в MODX могут иметь параметры. Например, рассмотрим чанк «intro», имеющий следующее содержимое:
Он имеет 2 плейсхолдера: [[+name]] и [[+messageCount]]. Передать значения этим плейсхолдерам можно с помощью указания соответствующих параметров вызову чанка:
В результате, получим следующее содержимое:
или в содержимом чанка:
Условия в чанках
Условия и другие фильтры MODX можно использовать в любых специальных тегах этой системы.
Например, внутри чанка в зависимости от идентификатора родителя текущего ресурса вывести один или другой чанк.
Но с фильтрами в MODX надо быть очень осторожными, т.к. они могут сильно увеличить время генерации страницы. Это происходит потому, что условия в тегах MODX работают не так как обычные условия в php. Например, в вышеприведённом примере оба чанка вызовутся, не зависимого от того какой идентификатор имеет родитель текущего ресурса. А уже только потом будет определяться какой из этих чанков будет выведен на страницу. Поэтому в MODX они и называются фильтрами. А теперь давайте представим, что в этих чанках есть вызовы некэшируемых сниппетов. В результате в не зависимости от идентификатора родителя текущего ресурса эти вызовы будут выполняться как в первом, так и во втором чанке. Это может привести к значительному увеличению времени генерации страницы и нагрузке на сервер. В таких случаях лучше фильтры не использовать, а выполнять эти действия с помощью сниппета.
Обработка чанка с помощью API
Чанки часто выступают в качестве шаблонов для вывода результатов работы сниппета. Обрабатывается чанк в сниппете через функцию getChunk().
Например, рассмотрим, как использовать чанк «rowTpl» в сниппете.
Чанк «rowTpl», имеет следующее содержимое:
Содержимое (php-код) сниппета, который получает все опубликованные ресурсы на сайте и выводит их в таблицу. Для вывода данных отдельного ресурса (одной строки таблицы, состоящей из 2 ячеек) используется шаблон rowTpl.
MODx: ресурсы, чанки и какие-то телевизоры
После того как один мой знакомый спросил у меня про то, что за телевизоры используются в шаблонах, я решил отложить все дела на вечер и написать эту статью.
Речь пойдёт о том из чего состоит MODx, как его лучше «готовить», «подавать» и «употреблять».
Рассчитана она в первую очередь на новичков т.к. содержит базовый минимум того, что нужно знать любому modxоводу, ну и конечно на тех кому просто интересно.
Статья ориентирована в основном на Revolution и отражает основные отличия в синтаксисе её от предшественницы, но для обратной совместимости буду вставлять иногда аналогии с Evolution.
Ресурсы (Resources)
Зачастую ресурс представляет собой страницу сайта. Кроме того существуют другие типы ресурсов, такие как, ссылки, сами файлы, и т.д. По умолчанию тип нового ресурса — документ, точнее представление одной страницы вашего сайта.
Шаблоны (Templates)
Параметры
Используются для вывода значений полей ресурса.
Вызов осуществляется так:
Evolution | Revolution |
[*field*] | [[*field]] |
Полный список полей можно посмотреть в документации здесь.
TV параметры
ТелевизорДополнительное поле или переменная шаблона (TV) — это настраиваемое поле, или, точнее это настраиваемое поле для ресурсов MODx. TV-параметры используются для расширения стандартных полей ресурса. Каждый ресурс в MODx имеет определенное количество полей по умолчанию см. выше в разделе про ресурсы.
Если встаёт задача добавить некоторые дополнительные поля на страницу, например, выпадающий список названий месяцев или дополнительное изображение, или любой другой тип пользовательских данных, это можно сделать добавив TV-параметр соответствующего типа. MODx позволяет иметь практически неограниченное количество TV-параметров.
TV-тег заменяется соответствующим значением заполненным пользователем при обработке ресурса. Так же каждый такой параметр привязан к какому либо шаблону и может использоваться лишь в совокупности с ним.
Вызов осуществляется так:
Evolution | Revolution |
[*tv*] | [[*tv]] |
TV параметры можно использовать как чанки добавляя им параметры. Например если есть TV-параметр ‘intromsg’ со значением:
Полный список фильтров можно посмотреть тут. Кроме того фильтры можно применять к чанкам и сниппетам.
Комментарии
Чанки (Chunks)
Чанк — кусок статического текста который можно встроить в шаблон, в другой чанк, либо вызвать в снипете. Чанк обладает теми же свойствами что и шаблон за исключением того, что не содержит TV-параметров и не может быть назначен ресурсу напрямую.
Чанк не может содержать какой-либо исполняемый код, но в нём можно вызывать сниппеты для вывода динамического контента.
Вызов чанка осуществляется так:
Evolution | Revolution |
< | [[$chunk]] |
В чанк можно передавать параметры. К примеру мы создадим чанк с таким содержанием:
Сниппеты (Snippets)
Сниппет — PHP код который исполняется во время обработки шаблона MODx. Результат работы его может быть расположен либо на месте его вывода, либо в плейсхолдерах, специальных тегах определяющими куда поместить те или иные результаты.
Вызов сниппета осуществляется так:
Evolution | Revolution |
[[snippet]] | [[snippet]] |
Размещение плейсхолдера:
Evolution | Revolution |
[+placeholder+] | [[+placeholder]] |
Как и чанки в сниппеты можно передавать параметры, например так:
Чтобы указать системе не кешировать сниппет требуется добавить восклицательный знак перед именем:
Синтаксис тегов
Каждый тег MODx Revolution может содержать в себе другие теги MODx. Для того что бы код был более менее читаем разрешено размещать код тега на нескольких строках придерживаясь такого общего формата (в скобках мои комментарии, которые писать не надо =)):
Что такое чанк в MODX Evo ✈ Evolution CMS
Что такое чанк в MODX Evo ✈ Evolution CMS
Как правило в шаблонах используется несколько чанков, которые содержат совпадающее оформление. Например можно вынести шапку, подвал, основное меню, крошки. Благодаря этому изменения можно будет вносить в одном чанке, а не нескольких шаблонах. Это и проще и нет риска оставить какой-то шаблон без важного изменения.
Пример содержимого чанка с плейсхолдерами:
Кроме указанных двух вариантов, чанк можно использовать для хранения какой-то специальной информации. Например можно хранить некий набор параметров для сниппета (допустим список файлов), который может формироваться вручную или другими средствами MODX.
Создание и редактирование чанка
Все чанки находятся в следующем месте:
Ресурсы → Управление ресурсами → Чанки
Список чанков выглядит примерно так:
Список чанков в MODX EVO
Для создания необходимо нажать на ссылку Новый чанк, а для редактирования существующего чанка достаточно нажать на ссылку с его названием. Появится следующая форма:
Новый чанк в MODX EVO
Обратим внимание на возможности при сохранении. Для этого есть следующие управляющие кнопки:
Управление чанком в MODX EVO
С основными кнопками все понятно:
Но MODX позволяет определить еще действие после сохранения чанка:
Создание копии чанка
Иногда бывает необходимо создать копию существующего чанка. Сделать это очень просто. Для этого необходимо зайти в редактирование нужного чанка и нажать на кнопку Сделать копию.
Управление чанком в MODX EVO
На всякий случай система попросит от вас подтверждение:
Копия чанка в MODX EVO
После этого откроется для редактирования копия чанка. Копия отличается тем, что к ее названию добавляется Duplicate of. Вам остается только исправить название на более подходящее и внести другие необходимые правки.
Копия создается сразу после подтверждения, поэтому если вы нажмете отмену, то в списке чанков копия все равно останется.
Для удаления необходимо зайти в режим редактирования соответствующего чанка и нажать кнопку Удалить.
Управление чанком в MODX EVO
После этого система попросит от вас подтверждение:
Внимание! Чанки удаляются полностью и возможности их восстановить нет.
В шаблоне и другом чанке
Существующий чанк в шаблоне (или другом чанке) вызывается очень просто. Для этого используется конструкция в виде названия чанка окруженного фигурными скобками:
Для получения содержимого чанка через API используется метод getChunk.
Я сделал чанк, но он не работает. Из-за чего это может быть?
Проверьте название чанка. Оно не должно содержать пробела, а регистр букв при вызове точности должен совпадать с названием чанка.
Основы движка MODX — чанки, сниппеты и плейсхолдеры
Рассмотрим базовые элементы движка MODX — чанки, сниппеты и плейсхолдеры. Они являются неотъемлемой частью сайтов на этой CMS, поэтому следует четко понимать их отличие и назначение. Посмотрим следующую схему:
Чанки
Чанк это мини-шаблон для отдельного блока сайта. Например, требуется для разных страниц использовать разные шаблоны, а шапка сайта должна быть одинаковой. В таком случае её лучше вынести в отдельный чанк и подключить его в нужных шаблонах. При необходимости поправить код шапки, не придется редактировать все имеющиеся шаблоны. Достаточно будет поправить один чанк.
Чанки могут быть вложены друг в друга, содержать сниппеты и плейсхолдеры:
Сниппеты в modx revo
Сниппет — это программный код (PHP,SQL,XPDO), в результате выполнения которого возвращается результат (аналог функций в PHP). Чаще всего результатом является html код, но это не обязательно. Например, он может произвести действия с базой данных и при этом ничего не вывести на экран. Вызываться сниппет может в шаблоне, чанке и даже в содержимом ресурса:
В примере используется стандартный вариант вызова сниппета с кешированием. В этом режиме при первом обращении к сниппету результат его работы кешируется, а при последующих обращениях — выдается сохраненный результат. Такой способ вызова ускоряет время генерации страницы и может применяться к элементам сайта, которые не требуют моментального обновления. Например, главное меню сайта, которое изменяется редко. Для запрета кеширования перед названием ставится восклицательный знак:
В MODX чаще всего используют готовые сниппеты, входящие в состав установленных компонентов (пакетов), но для лучшего понимания принципов их работы создадим свой.
Передача параметров сниппету
Создадим сниппет «CountChar», который будет в качестве параметров получать строку и цвет, а на выходе выдавать количество букв в строке и выделять это число указанным цветом.
В коде сниппета получаем параметры. При этом, можно задать значение, которое будет присваиваться переменной, если параметр не указывался (», ‘black’). Далее производим вычисления и возвращаем результат.
Передача плейсхолдеров в чанк
Мы реализовали задуманное, но при этом нарушили негласное правило — смешали программный код и теги оформления. Если кому-то потребуется обернуть результат не в тег «span», а в «div», то могут возникнуть проблемы. Конечно, хорошо когда в коде всего десять строк, а если их будет тысяча? Для избежания таких проблем отделим «мух от котлет».
Создадим чанк «tplCountChar», внутрь которого поместим плейсхолдеры:
Осталось доработать сам сниппет. Разбирать его подробно не будем, так как он содержит в себе комментарии:
Результат работы: 11 символов!
Запуск сниппета из сниппета
Про тонкости разработки сниппетов в MODX Revolution можно написать целую книгу, поэтому я ограничусь ещё только одной «фишкой» — возможностью запускать из своего сниппета сторонние. При создании сайтов такой функционал будет требоваться крайне редко, поэтому считайте эту информацию лишь небольшим бонусом.
Синтаксис вызова отличается от используемого в чанках или шаблонах, но результат будет тот же самый.
Плейсхолдеры в MODX
Есть ещё системные плейсхолдеры. Они берутся из системных настроек MODX и доступны для вызова в любом месте сайта:
Таких переменных насчитывается несколько десятков, но большинство из них не требуется при разработке сайта.