Куски кода в шаблоне
| Macik |
|
|---|---|
#39730 Dr2005alex: Да. Только сделать это надо красиво и продуманно, с перспективой на будущее. (см. ниже)
Главное, что в таком случае мы теряем возможность использовать внутри чанков теги текущего шаблона (в котором чанк используется), и все «скатывается» к прямому аналогу слотов с парсингом а-ля «slot-n-tags».
Нет, это совсем не вариант. --- На счет универсального расширения CoTemplate мысль такая:
Т.е. если такой механизм будет готов, то для чанков мы просто создаем отдельный плагин, которы будет его использовать, заключая всю логику обработки таких блоков только в себе, без необходимости вносить дополнительные правки в шаблонизатор.
// условный код на PHP
// в хуке global регистрируем свои обработчики
XTemplate::set_extender(array(
'CHUNK:' => 'cot_chunk_parse',
'$' => 'cot_chunk_parse', // тоже самое но в стиле ModX
));
// в плагине, описываем функцио обработки, которая будет заниматься всем дальнейшим процессом обработки
/**
* обработка чанков
*
* @param array $found_ext_tag массив содержащий PCRE совпадения, содержит:
* $found_ext_tag[1] — имя расширенного тега, например `CHUNK:`
* $found_ext_tag[2] — тело расширенного тега для дальнейшей работы
* @param XTemplate $tpl_context ссылка на текущий экземпляр CoTemplate (из которого осуществлен вызов)
* @return string
*/
function cot_chunk_parse($found_ext_tag, $tpl_context){
/* парсим $found_ext_tag[2] для получения имени конкретного чанка, его параметров и т.п. в зависимости от установленного синтаксиса */
// …
return $parsed;
}
Добавлено 4 минуты спустя: #39733 Dr2005alex: Предлагаю более универсальный вариант — см. выше. https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F |