Основное назначение и место в системе Cotonti
Шаблон admin.other.tpl используется в административной панели Cotonti для отображения различных дополнительных системных разделов. Он представляет собой интерфейс, где администратор может управлять кэшем, дополнительными полями, логами, конфигурацией PHP и другими инструментами.
Файл является частью административного интерфейса и используется для формирования разделов, содержащих ссылки на соответствующие функции системы. Он работает в связке с PHP-кодом, который передает в шаблон переменные, содержащие ссылки, названия и описания функциональных блоков.
Шаблон рендерится через XTemplate и обрабатывается методами $t->parse('MAIN') и $t->parse('SECTION'), что позволяет ему динамически адаптироваться в зависимости от переданных данных
Разбор кода шаблона (файл admin.other.tpl) в контексте логики Cotonti CMF
1. Назначение шаблона
Этот шаблон отвечает за отображение админ-раздела "Прочее" в системе Cotonti CMF. Он предоставляет ссылки на различные вспомогательные инструменты и настройки, такие как управление кешем, дополнительными полями, логами, системной информацией и параметрами PHP.
2. Разбор конструкций <!-- ... -->
-
<!-- BEGIN: MAIN --> / <!-- END: MAIN -->
- Основной блок шаблона, который будет обработан методом
$t->parse('MAIN');.
- Включает в себя два раздела:
- Блок "Core" — ссылки на ключевые функции системы.
- Динамический блок "SECTION" — генерируемый список расширений или плагинов.
-
<!-- BEGIN: SECTION --> / <!-- END: SECTION -->
- Дополнительный раздел, содержащий динамический список элементов.
- В отличие от основного блока, его содержимое может изменяться в зависимости от переданных данных.
-
<!-- BEGIN: ROW --> / <!-- END: ROW -->
- Один элемент из списка разделов (например, отдельное расширение или инструмент).
- Если таких элементов несколько, этот блок повторяется для каждого.
-
<!-- BEGIN: EMPTY --> / <!-- END: EMPTY -->
- Выводится, если список разделов пуст.
- В таком случае показывается сообщение
{PHP.L.adm_listisempty} (локализованная фраза "Список пуст").
<!-- BEGIN: MAIN --> <!-- Главный блок шаблона, который движок Cotonti обработает через $t->parse('MAIN'); -->
<div class="block">
<h2>{PHP.L.Core}</h2> <!-- Вывод локализованного заголовка "Core" через языковую переменную {PHP.L.Core} -->
<div class="wrapper">
<table class="cells">
<tbody>
<tr>
<td class="start">
<figure>{PHP.R.admin_icon_core}</figure> <!-- Вывод иконки для раздела через переменную {PHP.R.admin_icon_core} -->
<div>
<a href="{ADMIN_OTHER_URL_CACHE}">{PHP.L.adm_internalcache}</a> <!-- Ссылка на страницу управления внутренним кешем, URL берется из {ADMIN_OTHER_URL_CACHE}, текст - из {PHP.L.adm_internalcache} -->
<p>{PHP.L.adm_internalcache_desc}</p> <!-- Описание функционала кеша через переменную {PHP.L.adm_internalcache_desc} -->
</div>
</td>
</tr>
<tr>
<td class="start">
<figure>{PHP.R.admin_icon_core}</figure> <!-- Вывод иконки для раздела -->
<div>
<a href="{ADMIN_OTHER_URL_DISKCACHE}">{PHP.L.adm_diskcache}</a> <!-- Ссылка на управление дисковым кешем, URL - {ADMIN_OTHER_URL_DISKCACHE}, текст - {PHP.L.adm_diskcache} -->
<p>{PHP.L.adm_diskcache_desc}</p> <!-- Описание дискового кеша {PHP.L.adm_diskcache_desc} -->
</div>
</td>
</tr>
<tr>
<td class="start">
<figure>{PHP.R.admin_icon_core}</figure> <!-- Вывод иконки для раздела -->
<div>
<a href="{ADMIN_OTHER_URL_EXFLDS}">{PHP.L.adm_extrafields}</a> <!-- Ссылка на страницу управления дополнительными полями, URL - {ADMIN_OTHER_URL_EXFLDS}, текст - {PHP.L.adm_extrafields} -->
<p>{PHP.L.adm_extrafields_desc}</p> <!-- Описание модуля дополнительных полей {PHP.L.adm_extrafields_desc} -->
</div>
</td>
</tr>
<tr>
<td class="start">
<figure>{PHP.R.icon_cfg_info}</figure> <!-- Вывод иконки для логов -->
<div>
<a href="{ADMIN_OTHER_URL_LOG}">{PHP.L.adm_log}</a> <!-- Ссылка на страницу логов, URL - {ADMIN_OTHER_URL_LOG}, текст - {PHP.L.adm_log} -->
<p>{PHP.L.adm_log_desc}</p> <!-- Описание логов {PHP.L.adm_log_desc} -->
</div>
</td>
</tr>
<tr>
<td class="start">
<figure>{PHP.R.icon_cfg_info}</figure> <!-- Вывод иконки для информации о системе -->
<div>
<a href="{ADMIN_OTHER_URL_INFOS}">{PHP.L.adm_infos}</a> <!-- Ссылка на страницу информации о системе, URL - {ADMIN_OTHER_URL_INFOS}, текст - {PHP.L.adm_infos} -->
<p>{PHP.L.adm_infos_desc}</p> <!-- Описание системной информации {PHP.L.adm_infos_desc} -->
</div>
</td>
</tr>
<tr>
<td class="start">
<figure>{PHP.R.icon_cfg_phpinfo}</figure> <!-- Вывод иконки для phpinfo -->
<div>
<a href="{ADMIN_OTHER_URL_PHPINFO}">{PHP.L.adm_phpinfo}</a> <!-- Ссылка на страницу phpinfo, URL - {ADMIN_OTHER_URL_PHPINFO}, текст - {PHP.L.adm_phpinfo} -->
<p>{PHP.L.adm_phpinfo_desc}</p> <!-- Описание phpinfo {PHP.L.adm_phpinfo_desc} -->
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- BEGIN: SECTION --> <!-- Дополнительный динамический раздел, который может содержать произвольные блоки, будет обработан через $t->parse('SECTION'); -->
<div class="block">
<h2>{ADMIN_OTHER_SECTION}</h2> <!-- Заголовок дополнительного раздела, берется из переменной {ADMIN_OTHER_SECTION} -->
<div class="wrapper">
<table class="cells">
<!-- BEGIN: ROW --> <!-- Один динамический элемент (строка) списка, который будет повторяться при наличии нескольких элементов -->
<tr>
<td class="start">
<figure>{ADMIN_OTHER_EXT_ICON}</figure> <!-- Иконка расширения из переменной {ADMIN_OTHER_EXT_ICON} -->
<div>
<a href="{ADMIN_OTHER_EXT_URL}">{ADMIN_OTHER_EXT_NAME}</a> <!-- Ссылка на расширение, URL - {ADMIN_OTHER_EXT_URL}, название - {ADMIN_OTHER_EXT_NAME} -->
<!-- IF {ADMIN_OTHER_EXT_DESC} --> <!-- Проверка, есть ли описание расширения {ADMIN_OTHER_EXT_DESC} -->
<p>{ADMIN_OTHER_EXT_DESC}</p> <!-- Если есть описание, оно выводится здесь -->
<!-- ENDIF --> <!-- Завершение условия проверки наличия описания -->
</div>
</td>
</tr>
<!-- END: ROW --> <!-- Конец динамического элемента списка -->
<!-- BEGIN: EMPTY --> <!-- Блок, который будет отображаться, если в разделе нет элементов -->
<tr>
<td colspan="2">{PHP.L.adm_listisempty}</td> <!-- Выводится сообщение "Список пуст" из переменной {PHP.L.adm_listisempty} -->
</tr>
<!-- END: EMPTY --> <!-- Конец блока пустого списка -->
</table>
</div>
</div>
<!-- END: SECTION --> <!-- Завершение дополнительного раздела -->
<!-- END: MAIN --> <!-- Завершение главного блока шаблона -->