XTemplate в Cotonti

Теги в шаблонах, шаблоны, системой XTemplate заменяются на соответствующие блоки HTML-кода, позволяет использовать файл шаблона исключительно для хранения HTML-кода,

XTemplate для программистов

Каждый, кто работал с шаблонами в Cotonti, сталкивался с использованием шаблонных тегов. Теги — это короткие фрагменты кода, которые при разборе (парсинге) системой XTemplate заменяются на соответствующие блоки HTML-кода. Это позволяет использовать файл шаблона исключительно для хранения HTML-кода, в то время как весь сгенерированный код, выполняемый на стороне сервера, поддерживается с помощью плагинов и обрабатывается через теги.

Основы работы с XTemplate

При разработке плагина для Cotonti важно понимать, как в системе XTemplate определяются теги и условные блоки. Ранее многие плагины использовали стандартный способ получения HTML-кода для парсинга и отображения. Хотя использование XTemplate с собственным файлом шаблона предоставляет гораздо больше возможностей, можно использовать и старый метод для отдельных плагинов. Для этого нужно работать с переменными $plugin_title, $plugin_subtitle, и $plugin_body, которые автоматически привязываются к тегам {PLUGIN_TITLE}, {PLUGIN_SUBTITLE}, и {PLUGIN_BODY}.

Если вы хотите использовать свой собственный файл шаблона, необходимо создать объект XTemplate. Это объектно-ориентированный элемент Cotonti. Для создания объекта XTemplate можно использовать следующий код:

$t = new XTemplate('path/to/file.tpl');


Здесь $t — это переменная, представляющая объект XTemplate, а 'path/to/file.tpl' — путь к файлу шаблона относительно корня Cotonti. Однако, такой способ не очень гибок, и для большей универсальности рекомендуется использовать функцию cot_tplfile():

$t = new XTemplate(cot_tplfile('pluginname', 'plug'));


В этом случае первый параметр — это имя файла без расширения, а второй параметр указывает на тип файла, который может быть plug для плагинов, module для модулей, или core для основного кода. Функция cot_tplfile() автоматически находит правильный путь к файлу шаблона. Обратите внимание, что имя файла должно начинаться с pluginname. Для нескольких файлов шаблонов можно использовать имена вроде pluginname.secondary.tpl, где расширение .tpl опускается.

Использование метода assign()
Следующий шаг — это назначение значений тегам в шаблоне. Для этого используется метод assign():


$t->assign();


Метод assign() может принимать как одиночные теги, так и массив тегов:

$t->assign('SINGLE_TAG', '<p>HTML-код</p>');
$t->assign(array(
    'TAG_ONE' => '<p>HTML-код</p>',
    'TAG_TWO' => $somevariable
));

 


Таким образом, можно привязать сразу несколько значений, которые будут заменены в шаблоне.

Использование цикла и метода parse()
Однако если вы хотите отобразить несколько строк данных, например, из базы данных, вам нужно использовать цикл, например, while. Рассмотрим следующий код:

while($row = $sql->fetch())
{
    $t->assign(array(
        'PAGE_ROW_ID' => $row['page_id'],
        'PAGE_ROW_TITLE' => $row['page_title']
    ));
}


 


Этот код назначает значения тегам для каждой строки результата SQL-запроса. Однако если вы используете несколько строк, теги будут переопределяться на каждой итерации цикла. Чтобы избежать этого, нужно использовать метод parse():

$t->parse();


 


Метод parse() принимает один параметр — блок кода, который должен быть определен в файле шаблона в виде HTML-комментариев. Каждый блок должен быть заключен в теги BEGIN и END:


 

<!-- BEGIN: BLOCK_CODE -->
...
<!-- END: BLOCK_CODE -->


В файле шаблона Cotonti основной блок всегда называется MAIN, но можно использовать и другие блоки. В коде PHP плагина нужно добавить метод parse() к циклу while:

while($row = $sql->fetch())
{
    $t->assign(array(
        'PAGE_ROW_ID' => $row['page_id'],
        'PAGE_ROW_TITLE' => $row['page_title']
    ));
    $t->parse('MAIN.PAGE_ROW');
}

 


Здесь мы создали блок PAGE_ROW внутри основного блока MAIN. Если вам нужно использовать несколько блоков, вы можете задать их и обработать по аналогии.

Структура шаблона

Шаблон может выглядеть следующим образом:

<!-- BEGIN: MAIN -->
    <h1>{SINGLE_TAG}</h1>
 
    <!-- BEGIN: PAGE_ROW -->
    <p>{PAGE_ROW_TITLE}</p>
    <!-- END: PAGE_ROW -->
<!-- END: MAIN -->


 

 

Если вы не хотите или не можете использовать блок MAIN, можно заменить его на другой блок. Однако для таких блоков нужно вручную вызвать метод parse():

$t->parse('ALTERNATIVE');
$t->out('ALTERNATIVE'); // Только для standalone


 


Лучше всего делать это непосредственно перед закрытием тега PHP.

3 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 26.01.2025 11:05
  • Последнее обновление: 26.01.2025 11:05

Похожие страницы

Операторы в конструкциях тегов Cotonti в TPL-шаблонах и синтаксис XTemplate
1 Операторы в конструкциях тегов Cotonti в TPL-шаблонах и синтаксис XTemplate (CoTemplate)Cotonti использует собственный
Cotonti Siena CMF • 19.02.2026 22:48 webitproff
XTemplate. Функции (методы) parse(), text() и out() в Cotonti Siena
2 Техническое руководство по функциям парсера шаблонов, в частности функциям parse() и out(), а также основам работы с
Cotonti Siena CMF • 22.02.2026 20:11 webitproff
Руководство по методам parse(), text() и out() в XTemplate Cotonti Siena
3 Руководство для новичков: методы assign(), parse(), text() и out() в XTemplate (CoTemplate) Cotonti Siena
Cotonti Siena CMF • 22.02.2026 20:28 webitproff
XTemplate и Controllers в Cotonti: Руководство для разработчиков
4 XTemplate и хуки в Cotonti: руководство разработчикаШаблонизатор XTemplate и система хуков образуют фундамент