Чанки в PHP-платформе Wad-er – это библиотеки часто используемых фрагментов HTML-кода, которые можно размещать на разных страницах и в разных частях шаблона. Например, к чанкам относится заголовок страницы, фрагменты меню, форма поиска и т.п. Это позволяет значительно экономить время при создании приложения путем повторного использования кода.
Чанки не могут содержать PHP-код (для этого используются сниппеты). Чанки могут использоваться в качестве мини-шаблонов. В этом случае они содержат текст и теги плейсхолдеров.
Чанк может быть составным – включать другие чанки.
PHP-платформа Wad-er предлагает постоянно расширяемую библиотеку чанков. Это чанки, используемые для отображения различных элементов:
Библиотека чанков может самостоятельно пополняться пользователями платформы.
В платформе Wad-er чанк является объектом, отображаемым в Каталоге объектов. Для доступа к дереву чанков используется меню Элементы сайта – Чанки.
При выборе записи конкретного чанка, в правом фрейме отображается карточка чанка, имеющая ряд вкладок – Общие, Код чанка, Описание, Прочие и Лог.
В полях вкладки Общие задается;
На вкладке Код чанка размещается исходный текст чанка.
На вкладке Описание размещается краткое описание чанка и пример его использования сниппетом.
В полях вкладки Прочие задаются:
Вызываются чанки из шаблона с помощью тэгов . Здесь chunck – Код (id) чанка.
Циклы внутри чанков. Конструкция < loop >…< /loop > Используется для перечисления однородных HTML-элементов внутри чанка. Например:
< h5 class="widget-title">Ссылки< /h5 > < ul > < loop > < li >< a href="" title="">< /a >< /li > < /loop > < /ul >
Содержимое тегов циклов – произвольное (…, < cycle>… ). Важно, чтобы эти теги не повторяли стандартные html-теги или не совпали с содержимым шаблона.
Замена циклической конструкции на динамическое содержимое происходит в сниппете. Например:
//id чанка $tpl = isset($tpl) ? $tpl : 'sys_chunks_pagelist_refs'; $chunk = $parser->getChunk($tpl); //вызов нужного чанка $links = array(); $links[] = array('{ * authoriz * }', '/login'); //проверка, встречается ли конструкция в чанке $loop = (preg_match('|< loop >(.*)< /loop >|sei', $chunk, $arr)) ? $arr[1] : ''; $outstr = ''; foreach($links as $row) { //замена плейсхолдера на динамическое значение $s = str_replace('{ + fresh.name + }', $row[0] , $loop); //замена плейсхолдера на динамическое значение $s = str_replace('{ + fresh.ref + }', $row[1], $s); $outstr .= $s; //сохранение конструкции в памяти } //замена всей конструкции и вывод кода чанка в браузер print(preg_replace("!< loop >(.*?)< /loop >!si", $outstr, $chunk));