Руководство по методам parse(), text() и out() в XTemplate Cotonti Siena

Filed under: Cotonti Siena CMF

Руководство для новичков: методы assign(), parse(), text() и out() в XTemplate (CoTemplate) Cotonti Siena v0.9.26

Представьте, что вы — повар, а XTemplate — ваш кухонный комбайн. Вы хотите приготовить красивое «блюдо» — веб-страницу. Шаблон .tpl — это рецепт (чистый HTML + специальные теги {НАЗВАНИЕ}). Данные из базы или PHP — это продукты (овощи, мясо, специи).

Методы assign(), parse(), text() и out() — это четыре главные кнопки комбайна:

КнопкаЧто делает в кухнеЧто делает в коде
assignКладёте продукты (овощи, мясо, соль) на рабочую поверхность комбайнаЗаписывает данные в переменные-теги
parseНарезает, смешивает, готовит порцию в миске (ничего не подаёт)Подготавливает блок
textПереливает готовое блюдо в контейнер (чтобы потом использовать)Возвращает HTML-строку
outПодаёт готовое блюдо прямо на стол гостямВыводит HTML сразу на экран
 

Теперь разберём каждую кнопку подробно, с примерами и комментариями, как будто вы впервые открыли кухню Cotonti.

0. Метод assign() — «Кладём продукты на рабочую поверхность»

Простыми словами:
Самый первый шаг. Вы говорите комбайну: «Вот эти данные — используй их вместо {ТЕГОВ} в рецепте».

Когда использовать:
Всегда **перед** parse() — без assign() в шаблоне будут пустые места или останутся сами {ТЕГИ}.

Аналогия:
Вы приходите на кухню и выкладываете на стол: помидоры, огурцы, соль, перец. Без продуктов комбайн ничего не приготовит.

Пример кода (самые частые варианты)

PHP
// Вариант 1: одна переменная
$t->assign('PAGE_TITLE', 'Моя первая статья');
// Вариант 2: сразу много — самый удобный и частый способ
$t->assign([
 'SITE_NAME' => $cfg['maintitle'],
 'USER_NAME' => $usr['name'],
 'CURRENT_YEAR' => date('Y'),
 'WELCOME_TEXT' => 'Приветствуем вас на сайте!',
 'LOGO_URL' => cot_url('index') . '/images/logo.png'
]);
// Вариант 3: целый кусок готового HTML
$t->assign('CUSTOM_BANNER', 'Акция -50% до конца недели!');

Важно: теги в шаблоне пишутся в верхнем регистре: {USER_NAME}, а не {user_name}. Если забыть assign — в debug-режиме увидите незаполненные теги.

1. Метод parse(string $block) — «Готовим порцию в миске»

Простыми словами: Метод берёт блок из шаблона, заменяет все {ТЕГИ} на реальные данные, обрабатывает циклы и условия — и складывает готовый кусок HTML внутрь объекта. На экран ничего не выводит!

Когда использовать:

  • Внутри циклов (чтобы накопить много строк).
  • Когда нужно подготовить блок, но выводить позже.

Аналогия: Вы нарезаете 10 огурцов и кидаете их в одну большую миску. Миска (объект $t) теперь содержит все огурцы, но на стол вы ещё ничего не поставили.

Пример кода (самый частый случай — вывод списка страниц)

PHP
 
// 1. Создаём комбайн и даём ему рецепт (шаблон)
$t = new XTemplate(cot_tplfile('list', 'module')); // или просто 'templates/mytpl.tpl'
// 2. Берём продукты из базы
$sql = $db->query("SELECT * FROM $db_pages WHERE page_state = 0 LIMIT 20");
while ($row = $sql->fetch()) { // для каждой страницы
 // 3. Кладём продукты в миску именно для этой строки
 $t->assign([
 'PAGE_ROW_ID' => $row['page_id'], // {PAGE_ROW_ID} → 15
 'PAGE_ROW_TITLE' => $row['page_title'], // {PAGE_ROW_TITLE} → "О чём эта статья"
 'PAGE_ROW_URL' => cot_page_url($row) // ссылка
 ]);
 // 4. САМОЕ ВАЖНОЕ: «нарезаем» эту строку и добавляем в миску
 // Без этого строка просто потеряется!
 $t->parse('MAIN.PAGE_ROW'); // вложенный блок
}
// 5. Говорим: «Теперь собери всё главное блюдо»
$t->parse('MAIN');
// Дальше можно вывести (см. метод out ниже)

Шаблон list.tpl (рецепт):

HTML
 
<!-- BEGIN: MAIN -->
 <h1>Список страниц</h1>
 <!-- BEGIN: PAGE_ROW -->
 <div class="page-item">
 <a href="{PAGE_ROW_URL}">{PAGE_ROW_TITLE}</a>
 (ID: {PAGE_ROW_ID})
 </div>
 <!-- END: PAGE_ROW -->
<!-- END: MAIN -->

Результат: в MAIN накопится 20 готовых <div class="page-item">...</div>.

2. Метод text(string $block) — «Переливаем в контейнер»

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

Аналогия: Вы приготовили суп в комбайне, а теперь перелили его в пластиковый контейнер, чтобы забрать домой или отправить другу.

Пример:

PHP
 
$t = new XTemplate('templates/email.tpl');
$t->assign([
 'USER_NAME' => $usr['name'],
 'USER_EMAIL' => $usr['email']
]);
$t->parse('EMAIL'); // готовим
$body = $t->text('EMAIL'); // ← вот тут получили строку!
// Теперь можно отправить письмо
cot_mail($usr['email'], 'Привет от сайта!', $body);

Шаблон email.tpl:

HTML
 
<!-- BEGIN: EMAIL -->
 <p>Здравствуйте, {USER_NAME}!</p>
 <p>Ваш email: {USER_EMAIL}</p>
 <p>Спасибо, что вы с нами ❤️</p>
<!-- END: EMAIL -->

3. Метод out(string $block) — «Подаём на стол»

Простыми словами: Самый простой способ показать результат пользователю. Сначала пытается сделать parse(), потом сразу echo (выводит на экран).

Аналогия: Вы нажали кнопку «Подать» — комбайн сам смешал и сразу вывалил блюдо на тарелку перед гостем.

Пример:

PHP
 
$t = new XTemplate(cot_tplfile('index', 'module'));
$t->assign('SITE_TITLE', 'Мой крутой сайт');
$t->assign('USER', $usr['name']);
// Один вызов — и всё на экране!
$t->out('MAIN');

Cotonti сам вызывает $t->out('MAIN') в конце работы модуля — поэтому в обычных шаблонах вам почти никогда не нужно писать out('MAIN') вручную.

Сравнение четырёх методов (таблица для запоминания)

МетодНужно ли делать что-то заранее?ВозвращаетВыводит на экран?Лучше всего использовать
assign()$this (для цепочки)НетПеред любым парсингом
parse()assign() желателен$this (для цепочки)НетВнутри циклов
text()Да (parse())string (HTML)НетДля почты, AJAX, файлов
out()Нет (сам вызовет parse)$thisДа (echo)Прямой вывод на страницу
 

Полезные советы для новичков

  1. Всегда делайте parse('MAIN.ЧТО_ТО') внутри while/for — иначе данные перезапишутся!
  2. Главный блок MAIN почти всегда парсится автоматически.
  3. Хотите очистить миску? → $t->reset('MAIN.PAGE_ROW');
  4. Включайте отладку: $cfg['debug_mode'] = true; — увидите все блоки и теги.
  5. Callback-функции — это «специи»: {PAGE_ROW_TITLE|cot_string_truncate:50}

Общая аналогия-шпаргалка (кухонная)

  • assign() → кладёте продукты на стол комбайна
  • parse() → включаете режим «измельчить и смешать»
  • text() → переливаете в банку
  • out() → сразу ставите тарелку на стол

Теперь вы точно знаете, какую кнопку нажать, чтобы ваше «блюдо» (веб-страница) получилось идеальным!

4 minutes read Sodium Carbonate

Comments (0)

No comments yet
Only registered users can post new comments

Recommended Products and Services

Cotonti CMF: Plugin Installation, Integration, and Adaptation

Cotonti CMF: Plugin Installation, Integration, and Adaptation

professional services for the installation, deep integration and adaptation of plug-ins for Cotonti
Index36: Modern Theme for Cotonti CMF

Index36: Modern Theme for Cotonti CMF

Index36, a website theme for Cotonti, is a complete website management ecosystem. The main focus is
Market Products Import CSV/Excel - плагин для Cotonti

Market Products Import CSV/Excel - плагин для Cotonti

Плагин marketproductsimport - это инструмент массового импорта товаров в интернет-магазин или

Content author

webitproff

Offline

Sodium Carbonate

Last logged: 2026-09-01 22:41

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • Page published: 2026-02-22 20:28
  • Last update: 2026-02-26 23:56

Связанные статьи

Similar pages

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

Recommended forum topics for this article

Дополнительные возможности шаблонизатора CoTemplate

Дополнительные возможности шаблонизатора CoTemplate

Справочник операторов. Условные блоки использующие оператор `IF`. Расширенные возможности движка
#35 | Постов: 1 | Просмотров: 1668
Что такое CoTemplate в CMS Cotonti. Блоки.

Что такое CoTemplate в CMS Cotonti. Блоки.

Введение. Общие сведения и основные понятия. CoTemplate это шаблонизатор, движок шаблонов в котонти,
#34 | Постов: 1 | Просмотров: 1087
"Index36" - основной шаблон сайта для Cotonti. Руководство по установке

"Index36" - основной шаблон сайта для Cotonti. Руководство по установке

Инструкция по установке темы "Index36" на сайт Cotonti Siena CMF. Удачной установки и красивого
#188 | Постов: 16 | Просмотров: 2317