Справочник шаблонов Cotonti: имена, назначение и примеры вызова пользовательской функции
Введение
В Cotonti каждый файл шаблона имеет уникальное имя, которое используется для его идентификации и загрузки движком. Знание правильных имён шаблонов критически важно для разработчиков и верстальщиков, поскольку позволяет:
- Быстро находить нужный файл для редактирования;
- Правильно использовать функцию
cot_tpl_url()для получения пути к шаблону; - Создавать новые шаблоны, следуя стандартам именования Cotonti;
- Эффективно отлаживать вёрстку, понимая, какой шаблон отвечает за конкретную страницу или блок.
В этом справочнике собраны все основные имена шаблонов, их назначение и примеры вызова функции cot_tpl_url() для различных типов расширений. Материал разделён по категориям для удобства поиска:
- Модули (
module) — основные разделы сайта (страницы, форум, пользователи и т.д.); - Плагины (
plug) — дополнительные функциональные блоки; - Ядро (
core) — системные шаблоны, используемые на всех страницах; - Админ-панель — шаблоны для управления сайтом.
Справочник поможет быстро сориентироваться в структуре шаблонов вашего сайта и правильно использовать функцию cot_tpl_url() в коде.
Оглавление
- Общий синтаксис
- Шаблоны модулей
- Шаблоны плагинов
- Системные шаблоны (ядро)
- Шаблоны админ-панели
- Сводная таблица шаблонов
- Примечания
- Заключение
- Полная инструкция по cot_tpl_url()
Общий синтаксис
{PHP|cot_tpl_url('имя_шаблона', 'тип', admin)}'имя_шаблона'— строковое имя файла без расширения.tpl(части разделяются точкой). Например,'page.list'.'тип'— тип расширения:'module'(по умолчанию),'plug','core'.admin— логический флаг:trueдля админ-шаблонов (ищет в папке админ-темы), иначе можно не указывать или передатьfalse/null.
Важно для cot_tpl_url(): эта функция принимает только строковые аргументы (имя шаблона, тип, флаг). Передавать в неё массив нельзя. Если имя шаблона формируется динамически в PHP, вычислите его заранее и передайте в шаблон как обычную переменную через $t->assign():
$tpl_url = cot_tpl_url($dynamic_name, 'module');
$t->assign('DYNAMIC_TPL_URL', $tpl_url);В шаблоне используйте {DYNAMIC_TPL_URL}.
Важно: в сами шаблонные переменные (не в cot_tpl_url()) можно передавать массивы и объекты – они поддерживаются через точечную нотацию ({user.name}) и циклы FOR. Ограничение на массивы относится только к аргументам функции cot_tpl_url(), а не к шаблонным данным в целом.
Шаблоны модулей
Page (страницы)
page.tpl— отображает одну страницу сайта: заголовок, текст, автора, дату и комментарии.{PHP|cot_tpl_url('page')}page.list.tpl— выводит список страниц внутри выбранной категории с пагинацией.{PHP|cot_tpl_url('page.list')}page.add.tpl— показывает форму добавления новой страницы пользователем.{PHP|cot_tpl_url('page.add')}page.edit.tpl— показывает форму редактирования существующей страницы.{PHP|cot_tpl_url('page.edit')}
Forums (форум)
forums.sections.tpl— выводит список всех разделов форума с количеством тем и сообщений.{PHP|cot_tpl_url('forums.sections')}forums.topics.tpl— отображает список тем в выбранном разделе форума.{PHP|cot_tpl_url('forums.topics')}forums.posts.tpl— показывает сообщения внутри конкретной темы форума.{PHP|cot_tpl_url('forums.posts')}forums.newtopic.tpl— отображает форму создания новой темы в разделе форума.{PHP|cot_tpl_url('forums.newtopic')}forums.editpost.tpl— показывает форму редактирования отдельного сообщения форума.{PHP|cot_tpl_url('forums.editpost')}
Users (пользователи)
users.details.tpl— выводит подробную информацию о пользователе: профиль, статистику, контакты.{PHP|cot_tpl_url('users.details')}users.edit.tpl— отображает форму редактирования данных профиля пользователя.{PHP|cot_tpl_url('users.edit')}users.register.tpl— показывает форму регистрации нового аккаунта.{PHP|cot_tpl_url('users.register')}users.profile.tpl— отображает публичный профиль пользователя для просмотра другими.{PHP|cot_tpl_url('users.profile')}users.passrecover.tpl— выводит форму восстановления забытого пароля.{PHP|cot_tpl_url('users.passrecover')}
PM (личные сообщения)
pm.list.tpl— показывает список входящих и исходящих личных сообщений пользователя.{PHP|cot_tpl_url('pm.list')}pm.message.tpl— отображает содержимое одного личного сообщения.{PHP|cot_tpl_url('pm.message')}pm.send.tpl— выводит форму отправки нового личного сообщения.{PHP|cot_tpl_url('pm.send')}
PFS (файловый менеджер)
pfs.tpl— основной интерфейс файлового менеджера: список файлов и папок, загрузка.{PHP|cot_tpl_url('pfs')}pfs.view.tpl— отображает содержимое конкретного файла или папки в файловом менеджере.{PHP|cot_tpl_url('pfs.view')}
Polls (опросы)
polls.tpl— выводит опрос с вариантами ответов и результатами голосования.{PHP|cot_tpl_url('polls')}
RSS
rss.tpl— формирует RSS-ленту последних материалов сайта.{PHP|cot_tpl_url('rss')}
Index
index.tpl— главная страница сайта, обычно выводит последние материалы и виджеты.{PHP|cot_tpl_url('index')}
Шаблоны плагинов
Для плагинов обязательно указывайте тип 'plug'.
Recent Items
recentitems.tpl— выводит список недавно добавленных или обновлённых материалов сайта.{PHP|cot_tpl_url('recentitems', 'plug')}
Comments
comments.tpl— отображает все комментарии к конкретному материалу с формой добавления.{PHP|cot_tpl_url('comments', 'plug')}comments.edit.tpl— показывает форму редактирования отдельного комментария.{PHP|cot_tpl_url('comments.edit', 'plug')}
Tags
tags.tpl— выводит облако тегов или список материалов, связанных с выбранным тегом.{PHP|cot_tpl_url('tags', 'plug')}
Sitemap
sitemap.tpl— отображает карту сайта со ссылками на все разделы и материалы.{PHP|cot_tpl_url('sitemap', 'plug')}sitemap.index.tpl— показывает индекс карты сайта для разбивки на несколько страниц.{PHP|cot_tpl_url('sitemap.index', 'plug')}
Ratings
ratings.tpl— выводит рейтинг материалов и элементы управления для голосования.{PHP|cot_tpl_url('ratings', 'plug')}
Contact
contact.tpl— отображает контактную форму для отправки сообщений администрации.{PHP|cot_tpl_url('contact', 'plug')}
Hits
hits.admin.tpl— админ-панель статистики посещений: графики, счётчики, отчёты.{PHP|cot_tpl_url('hits.admin', 'plug', true)}
Banlist
banlist.admin.tpl— админ-панель управления заблокированными пользователями и IP-адресами.{PHP|cot_tpl_url('banlist.admin', 'plug', true)}
Системные шаблоны (ядро core)
header.tpl— общая шапка сайта: логотип, меню, мета-теги, подключается на всех страницах.{PHP|cot_tpl_url('header', 'core')}footer.tpl— общий подвал сайта: копирайт, дополнительные ссылки, скрипты, подключается на всех страницах.{PHP|cot_tpl_url('footer', 'core')}message.tpl— выводит системные сообщения, ошибки и уведомления пользователю.{PHP|cot_tpl_url('message', 'core')}
Шаблоны админ-панели
Ядро админки
admin.home.tpl— главная страница административной панели с обзором системы.{PHP|cot_tpl_url('admin.home', 'core', true)}admin.main.tpl— основной каркас админ-панели: общая разметка, меню, сайдбар.{PHP|cot_tpl_url('admin.main', 'core', true)}admin.config.tpl— страница настройки основных параметров сайта.{PHP|cot_tpl_url('admin.config', 'core', true)}admin.extensions.tpl— управление установленными модулями и плагинами: включение, отключение, настройка.{PHP|cot_tpl_url('admin.extensions', 'core', true)}admin.users.tpl— управление пользователями: редактирование, блокировка, удаление аккаунтов.{PHP|cot_tpl_url('admin.users', 'core', true)}admin.structure.tpl— управление структурой сайта: категории, разделы, их порядок и параметры.{PHP|cot_tpl_url('admin.structure', 'core', true)}admin.extrafields.tpl— настройка дополнительных полей для различных сущностей.{PHP|cot_tpl_url('admin.extrafields', 'core', true)}admin.cache.tpl— управление кэшем сайта: очистка, настройка времени хранения.{PHP|cot_tpl_url('admin.cache', 'core', true)}admin.cache.disk.tpl— подробности о кэше на диске: просмотр и очистка отдельных файлов кэша.{PHP|cot_tpl_url('admin.cache.disk', 'core', true)}admin.log.tpl— просмотр журнала событий системы: действия пользователей, ошибки.{PHP|cot_tpl_url('admin.log', 'core', true)}admin.rights.tpl— настройка прав доступа для групп пользователей.{PHP|cot_tpl_url('admin.rights', 'core', true)}admin.rightsbyitem.tpl— детальная настройка прав доступа для конкретного элемента сайта.{PHP|cot_tpl_url('admin.rightsbyitem', 'core', true)}admin.other.tpl— прочие административные настройки, не вошедшие в другие разделы.{PHP|cot_tpl_url('admin.other', 'core', true)}admin.phpinfo.tpl— вывод информации о PHP-конфигурации сервера.{PHP|cot_tpl_url('admin.phpinfo', 'core', true)}admin.infos.tpl— отображение сводной информации о системе и окружении Cotonti.{PHP|cot_tpl_url('admin.infos', 'core', true)}
Админ-шаблоны модулей
page.admin.tpl— админ-панель управления страницами: массовые операции, категории.{PHP|cot_tpl_url('page.admin', 'module', true)}forums.admin.tpl— админ-панель управления форумом: разделы, темы, модерация.{PHP|cot_tpl_url('forums.admin', 'module', true)}polls.admin.tpl— админ-панель управления опросами: создание и редактирование.{PHP|cot_tpl_url('polls.admin', 'module', true)}pfs.admin.tpl— админ-панель файлового менеджера: настройки, ограничения.{PHP|cot_tpl_url('pfs.admin', 'module', true)}
Админ-шаблоны плагинов
recentitems.admin.tpl— админ-панель плагина Recent Items: настройка вывода последних материалов.{PHP|cot_tpl_url('recentitems.admin', 'plug', true)}comments.admin.tpl— админ-панель плагина Comments: модерация комментариев.{PHP|cot_tpl_url('comments.admin', 'plug', true)}tags.tools.tpl— инструменты плагина Tags: массовое управление тегами.{PHP|cot_tpl_url('tags.tools', 'plug', true)}
Сводная таблица шаблонов
| Категория | Имя шаблона | Назначение | Пример вызова |
|---|---|---|---|
| Page (страницы) | page.tpl | Отображение одной страницы сайта | {PHP|cot_tpl_url('page')} |
page.list.tpl | Список страниц в категории | {PHP|cot_tpl_url('page.list')} | |
page.add.tpl | Форма добавления новой страницы | {PHP|cot_tpl_url('page.add')} | |
page.edit.tpl | Форма редактирования страницы | {PHP|cot_tpl_url('page.edit')} | |
| Forums (форум) | forums.sections.tpl | Список разделов форума | {PHP|cot_tpl_url('forums.sections')} |
forums.topics.tpl | Список тем в разделе | {PHP|cot_tpl_url('forums.topics')} | |
forums.posts.tpl | Сообщения внутри темы | {PHP|cot_tpl_url('forums.posts')} | |
forums.newtopic.tpl | Форма создания новой темы | {PHP|cot_tpl_url('forums.newtopic')} | |
forums.editpost.tpl | Форма редактирования сообщения | {PHP|cot_tpl_url('forums.editpost')} | |
| Users (пользователи) | users.details.tpl | Подробный профиль пользователя | {PHP|cot_tpl_url('users.details')} |
users.edit.tpl | Форма редактирования профиля | {PHP|cot_tpl_url('users.edit')} | |
users.register.tpl | Форма регистрации аккаунта | {PHP|cot_tpl_url('users.register')} | |
users.profile.tpl | Публичный профиль пользователя | {PHP|cot_tpl_url('users.profile')} | |
users.passrecover.tpl | Форма восстановления пароля | {PHP|cot_tpl_url('users.passrecover')} | |
| PM (личные сообщения) | pm.list.tpl | Список личных сообщений | {PHP|cot_tpl_url('pm.list')} |
pm.message.tpl | Содержимое одного сообщения | {PHP|cot_tpl_url('pm.message')} | |
pm.send.tpl | Форма отправки сообщения | {PHP|cot_tpl_url('pm.send')} | |
| PFS (файловый менеджер) | pfs.tpl | Основной интерфейс файлового менеджера | {PHP|cot_tpl_url('pfs')} |
pfs.view.tpl | Просмотр содержимого файла/папки | {PHP|cot_tpl_url('pfs.view')} | |
| Polls (опросы) | polls.tpl | Опрос с вариантами ответов | {PHP|cot_tpl_url('polls')} |
| RSS | rss.tpl | RSS-лента последних материалов | {PHP|cot_tpl_url('rss')} |
| Index | index.tpl | Главная страница сайта | {PHP|cot_tpl_url('index')} |
| Плагины | recentitems.tpl | Список недавно добавленных материалов | {PHP|cot_tpl_url('recentitems', 'plug')} |
comments.tpl | Комментарии с формой добавления | {PHP|cot_tpl_url('comments', 'plug')} | |
comments.edit.tpl | Форма редактирования комментария | {PHP|cot_tpl_url('comments.edit', 'plug')} | |
tags.tpl | Облако тегов или список по тегу | {PHP|cot_tpl_url('tags', 'plug')} | |
sitemap.tpl | Карта сайта | {PHP|cot_tpl_url('sitemap', 'plug')} | |
sitemap.index.tpl | Индекс карты сайта | {PHP|cot_tpl_url('sitemap.index', 'plug')} | |
ratings.tpl | Рейтинг материалов | {PHP|cot_tpl_url('ratings', 'plug')} | |
contact.tpl | Контактная форма | {PHP|cot_tpl_url('contact', 'plug')} | |
| Ядро (core) | header.tpl | Шапка сайта | {PHP|cot_tpl_url('header', 'core')} |
footer.tpl | Подвал сайта | {PHP|cot_tpl_url('footer', 'core')} | |
message.tpl | Системные сообщения и ошибки | {PHP|cot_tpl_url('message', 'core')} | |
| Админ-панель (core, admin=true) | admin.home.tpl | Главная страница админ-панели | {PHP|cot_tpl_url('admin.home', 'core', true)} |
admin.main.tpl | Основной каркас админ-панели | {PHP|cot_tpl_url('admin.main', 'core', true)} | |
admin.config.tpl | Настройка параметров сайта | {PHP|cot_tpl_url('admin.config', 'core', true)} | |
admin.extensions.tpl | Управление модулями и плагинами | {PHP|cot_tpl_url('admin.extensions', 'core', true)} | |
admin.users.tpl | Управление пользователями | {PHP|cot_tpl_url('admin.users', 'core', true)} | |
admin.structure.tpl | Управление структурой сайта | {PHP|cot_tpl_url('admin.structure', 'core', true)} | |
admin.extrafields.tpl | Настройка дополнительных полей | {PHP|cot_tpl_url('admin.extrafields', 'core', true)} | |
admin.cache.tpl | Управление кэшем | {PHP|cot_tpl_url('admin.cache', 'core', true)} | |
admin.cache.disk.tpl | Детали дискового кэша | {PHP|cot_tpl_url('admin.cache.disk', 'core', true)} | |
admin.log.tpl | Журнал событий системы | {PHP|cot_tpl_url('admin.log', 'core', true)} | |
admin.rights.tpl | Настройка прав доступа | {PHP|cot_tpl_url('admin.rights', 'core', true)} | |
admin.rightsbyitem.tpl | Права для конкретного элемента | {PHP|cot_tpl_url('admin.rightsbyitem', 'core', true)} | |
admin.other.tpl | Прочие административные настройки | {PHP|cot_tpl_url('admin.other', 'core', true)} | |
admin.phpinfo.tpl | Информация о PHP | {PHP|cot_tpl_url('admin.phpinfo', 'core', true)} | |
admin.infos.tpl | Сводная информация о системе | {PHP|cot_tpl_url('admin.infos', 'core', true)} | |
| Админ-шаблоны модулей | page.admin.tpl | Управление страницами | {PHP|cot_tpl_url('page.admin', 'module', true)} |
forums.admin.tpl | Управление форумом | {PHP|cot_tpl_url('forums.admin', 'module', true)} | |
polls.admin.tpl | Управление опросами | {PHP|cot_tpl_url('polls.admin', 'module', true)} | |
pfs.admin.tpl | Управление файловым менеджером | {PHP|cot_tpl_url('pfs.admin', 'module', true)} | |
| Админ-шаблоны плагинов | recentitems.admin.tpl | Настройка Recent Items | {PHP|cot_tpl_url('recentitems.admin', 'plug', true)} |
comments.admin.tpl | Модерация комментариев | {PHP|cot_tpl_url('comments.admin', 'plug', true)} | |
tags.tools.tpl | Управление тегами | {PHP|cot_tpl_url('tags.tools', 'plug', true)} |
Примечания
- Если тип не указан, подразумевается
'module'. - Для плагинов всегда указывайте
'plug'. - Для админ-шаблонов добавляйте третий параметр
true. Третий параметр функции
cot_tpl_url($base, $type, $admin)— это$admin.true— искать в админ-теме (папкаthemes/admin/...или указанная в$cfg['admintheme']).falseилиnull(по умолчанию) — поиск в обычной теме пользователя, а если имя содержитadmin, Cotonti может автоматически выбрать админ-тему.
Пример:
{PHP|cot_tpl_url('page.admin', 'module', true)}— найди шаблонpage.admin.tplв админской части темы. БезtrueCotonti может искать его в обычной теме, что может дать неверный путь.- В функцию
cot_tpl_url()нельзя передавать массив – она принимает только строки. Однако в обычные шаблонные переменные ($t->assign()) массивы передавать можно, и обращаться к их элементам через точечную нотацию (например,{user.profile.name}). Для перебора массивов используйте конструкцию<!-- FOR ... IN ... -->. Если имя шаблона формируется динамически, передавайте его в шаблон через
$t->assign()из PHP-кода:$tpl_url = cot_tpl_url($dynamic_name, 'module'); $t->assign('DYNAMIC_TPL_URL', $tpl_url);В шаблоне:
{DYNAMIC_TPL_URL}Работа с массивами в шаблонах. Если вы присвоили переменной массив:
$t->assign('user', ['name' => 'Иван', 'age' => 30]);то в шаблоне можно вывести
{user.name}и{user.age}. Также можно использовать массивы в циклах:<!-- FOR {item} IN {items} --> {item.title} <!-- ENDFOR -->Это стандартная возможность CoTemplate, и она не запрещена.
Это далеко не полный набор примеров для всех категорий и типов шаблонов, но этого достаточно, чтобы разобраться.
Заключение
Данный справочник охватывает основные имена шаблонов Cotonti, сгруппированные по категориям. Используйте его для:
- Быстрого поиска нужного шаблона при редактировании внешнего вида сайта;
- Правильного вызова функции
cot_tpl_url()в коде; - Понимания структуры шаблонов системы и их назначения.
Сводная таблица в конце статьи поможет быстро найти шаблон по категории и получить готовый пример вызова. Если вы не нашли нужный шаблон в списке, обратитесь к документации соответствующего модуля или плагина.
Помните, что имена шаблонов могут отличаться в зависимости от версии Cotonti и используемой темы оформления. В случае сомнений проверяйте фактические имена файлов в папке /themes/ваша_тема/.
Дополнение
Полная инструкция по cot_tpl_url() – каждый случай с примерами
1. Что возвращает cot_tpl_url()
Возвращает абсолютный URL к файлу шаблона (например, https://site.com/themes/default/modules/page/page.list.tpl).
Это НЕ ссылка на страницу сайта – это путь к файлу для отладки, кэширования или проверки.
2. Где можно вызывать
| Место | Синтаксис |
|---|---|
| В PHP-коде (контроллер, хук, плагин) | cot_tpl_url($base, $type, $admin) |
В TPL-шаблоне (через {PHP|...}) | {PHP|cot_tpl_url('...', '...', ...)} |
3. Что можно передавать в первый параметр ($base)
| Место вызова | Можно строку | Можно массив |
|---|---|---|
| PHP | ✅ да | ✅ да |
TPL ({PHP|...}) | ✅ да | ❌ НЕТ (только строки) |
4. Примеры для каждого случая
Случай 1: Вызов в PHP со строкой
Когда: имя шаблона известно и не меняется, вы уже в PHP.
// Пример 1.1 – получить URL шаблона page.list.tpl
$url = cot_tpl_url('page.list', 'module');
// Результат: https://site.com/themes/default/modules/page/page.list.tpl
// Пример 1.2 – с явным указанием типа 'core'
$header_url = cot_tpl_url('header', 'core');
// Результат: https://site.com/themes/default/core/header.tpl
// Пример 1.3 – админ-шаблон (третий параметр true)
$admin_url = cot_tpl_url('admin.config', 'core', true);
// Результат: https://site.com/themes/admin/core/admin.config.tpl
Пояснение: первый аргумент – строка с именем файла без расширения .tpl; второй – тип ('module', 'plug' или 'core'); третий – true для админ-темы.
Случай 2: Вызов в PHP с массивом
Когда: имя шаблона собирается из нескольких частей динамически.
// Пример 2.1 – массив из двух частей
$parts = ['page', 'list'];
$url = cot_tpl_url($parts, 'module');
// Эквивалентно cot_tpl_url('page.list', 'module')
// Пример 2.2 – динамическое имя из переменных
$module = 'forums';
$action = 'topics';
$url = cot_tpl_url([$module, $action], 'module');
// Результат: URL к forums.topics.tpl
// Пример 2.3 – массив для плагина
$plugin_parts = ['comments', 'edit'];
$url = cot_tpl_url($plugin_parts, 'plug');
// Результат: URL к comments.edit.tpl в папке плагинов
Пояснение: массив преобразуется в строку через соединение элементов точкой. Работает только в PHP, не в TPL.
Случай 3: Вызов в TPL со строкой (прямой вызов)
Когда: имя шаблона известно и вы хотите получить URL прямо в шаблоне.
<!-- Пример 3.1 – простой вызов -->
{PHP|cot_tpl_url('page.list', 'module')}
<!-- Пример 3.2 – админ-шаблон -->
{PHP|cot_tpl_url('admin.home', 'core', true)}
<!-- Пример 3.3 – плагин -->
{PHP|cot_tpl_url('recentitems', 'plug')}
Пояснение: внутри {PHP|...} все аргументы обязаны быть строками. Массивы запрещены.
Случай 4: Передача результата из PHP в TPL (рекомендуемый способ)
Когда: имя динамическое или нужно использовать массив.
Шаг 1 – в PHP:
$dynamic_name = ['page', 'list'];
$tpl_url = cot_tpl_url($dynamic_name, 'module');
$t->assign('TPL_DEBUG_URL', $tpl_url);
Шаг 2 – в TPL:
<p>Используемый шаблон: <code>{TPL_DEBUG_URL}</code></p>
Пояснение: вычисляете URL в PHP (можно с массивом), передаёте в TPL через $t->assign() – это единственный способ использовать массив.
Случай 5: Что нельзя делать (ошибки)
| Действие | Результат |
|---|---|
{PHP|cot_tpl_url(['page','list'])} | СИНТАКСИЧЕСКАЯ ОШИБКА – TPL-парсер не понимает квадратные скобки. |
{PHP|cot_tpl_url($my_array)} | НЕ СРАБОТАЕТ – в TPL нет переменных-массивов. |
Передать массив в cot_tpl_url() внутри {PHP|...} | ОШИБКА – недопустимо. |
Использовать cot_tpl_url() для ссылок на страницы сайта | НЕПРАВИЛЬНО – это URL к файлу шаблона, а не к странице. Для ссылок используйте cot_url(). |
6. Сводная таблица всех вариантов
| Контекст | Тип первого аргумента | Синтаксис | Пример |
|---|---|---|---|
| PHP | строка | cot_tpl_url('page.list', 'module') | $url = cot_tpl_url('page.list'); |
| PHP | массив | cot_tpl_url(['page','list'], 'module') | $url = cot_tpl_url(['page','list']); |
| TPL (прямой вызов) | строка | {PHP|cot_tpl_url('page.list', 'module')} | {PHP|cot_tpl_url('page.list')} |
| TPL (через переменную) | не важно (уже строка) | {MY_URL} | {TPL_DEBUG_URL} |
7. Когда что выбирать – рекомендации
- Всегда, когда имя динамическое – вычисляйте URL в PHP (можно с массивом) и передавайте в шаблон через
$t->assign(). - Если имя статическое и нужно быстро вывести – можно использовать прямой вызов в TPL со строкой.
- Никогда не пытайтесь передать массив в TPL – это не работает.
- Для ссылок на страницы сайта – используйте
cot_url(), а неcot_tpl_url().
8. Полный пример реального использования
Задача: вывести на странице отладочную информацию о том, какой шаблон используется для списка страниц.
PHP (контроллер):
$debug_tpl = cot_tpl_url(['page', 'list'], 'module');
$t->assign('DEBUG_TPL', $debug_tpl);
TPL (шаблон):
<div style="background:#f0f0f0; padding:5px; font-size:12px;">
Используемый шаблон: <code>{DEBUG_TPL}</code>
</div>
9. Важные итоги (запомните раз и навсегда)
cot_tpl_url()– это URL к файлу шаблона, а не к странице.- В TPL (
{PHP|...}) – только строки, массивы запрещены. - В PHP – можно и строку, и массив.
- Массив – это просто удобная запись для динамических имён, он преобразуется в строку с точками.
- Всегда передавайте результат из PHP в шаблон через
$t->assign(), если имя динамическое. - Для ссылок на страницы используйте
cot_url().
{PHP|...}– универсальный механизм для вызова любых функций (стандартных PHP, пользовательских, из ядра Cotonti, из плагинов).В коде нет никакого жёсткого списка разрешённых функций – вызывается всё, что существует.
Массивы в аргументах внутри
{PHP|...}не работают – потому чтоcotpl_parseArgument()обрабатывает только скаляры, и внутри TPL-тега все аргументы передаются как строки.Всё это реализовано в классах
Cotpl_varиCotpl_dataШАБЛОНИЗАТОРА.
<!-- Простой вызов -->
{PHP|my_function('param1', 'param2')}
<!-- С тегами и переменными -->
{MYTAG|my_function()}
{PHP.somevariable|my_function()}
<!-- С несколькими аргументами -->
{MY_TAG|substr($this, 3, 'foo')}сама в шоке
English