Назначение файла users.tpl и его место в системе Cotonti
Файл users.tpl является частью системы шаблонов XTemplate, используемой в Cotonti CMF, и расположен в папке /modules/users/tpl/. Его основное назначение — предоставлять структуру и дизайн интерфейса модуля "Пользователи" (Users). Этот файл отвечает за визуальное отображение информации о пользователях, такие как список пользователей, фильтры для поиска, сортировку и навигацию по страницам. Шаблон тесно взаимодействует с PHP-кодом модуля, который передаёт в шаблон данные через переменные, заключённые в фигурные скобки {}.
Шаблон users.tpl структурирован так, чтобы пользователи могли легко фильтровать, сортировать и просматривать информацию о других зарегистрированных пользователях. Он также позволяет разработчикам кастомизировать внешний вид без изменений в коде модуля, сохраняя разделение логики и представления.
Содержание кода: задачи и условия
-
Фильтры и сортировка
Шаблон включает форму фильтрации, которая позволяет пользователям искать других пользователей по имени, стране, основной группе и другим критериям. Также присутствуют поля для выбора порядка сортировки и её направления (по возрастанию или убыванию).
-
Отображение списка пользователей
Центральный элемент шаблона — таблица, содержащая данные о пользователях: имя, группа, страна, дата регистрации и другие параметры. Для каждого пользователя создаётся отдельная строка с данными, которые передаются через логические блоки <!-- BEGIN: USERS_ROW --> и <!-- END: USERS_ROW -->.
-
Навигация по страницам
В нижней части шаблона предусмотрена панель пагинации, отображающая текущую страницу, количество записей на странице и общее количество записей в разделе. Также реализованы кнопки перехода между страницами.
Список всех переменных и их назначение
-
{USERS_BREADCRUMBS}
Выводит навигационную цепочку (breadcrumbs), помогающую пользователю ориентироваться на сайте.
-
{PHP.L.Filters}
Локализованная строка "Фильтры", используемая в заголовке формы фильтрации.
-
{USERS_FILTERS_ACTION}
URL для отправки формы фильтрации.
-
{USERS_FILTERS_PARAMS}
Дополнительные скрытые параметры, которые добавляются в форму фильтрации.
-
{USERS_FILTERS_COUNTRY}
Поле выбора страны для фильтрации.
-
{USERS_FILTERS_MAIN_GROUP}
Поле выбора основной группы для фильтрации.
-
{USERS_FILTERS_GROUP}
Поле выбора дополнительных групп для фильтрации.
-
{USERS_FILTERS_SEARCH}
Поле для ввода имени пользователя для поиска.
-
{USERS_FILTERS_SORT}
Поле выбора параметра сортировки.
-
{USERS_FILTERS_SORT_WAY}
Поле выбора направления сортировки (по возрастанию или убыванию).
-
{PHP.L.Submit}
Локализованная строка "Отправить", используемая на кнопке формы.
-
{USERS_TOP_NAME}
Заголовок колонки с именем пользователя.
-
{USERS_TOP_MAIN_GROUP}
Заголовок колонки с основной группой пользователя.
-
{USERS_TOP_GROUP_LEVEL}
Заголовок колонки с уровнем группы.
-
{USERS_TOP_COUNTRY}
Заголовок колонки с названием страны.
-
{USERS_TOP_REGISTRATION_DATE}
Заголовок колонки с датой регистрации.
-
{USERS_ROW_PM}
Иконка или кнопка для отправки личного сообщения пользователю.
-
{USERS_ROW_NAME}
Имя пользователя.
-
{USERS_ROW_TAG}
Дополнительный тег или статус пользователя.
-
{USERS_ROW_MAIN_GROUP}
Основная группа пользователя.
-
{USERS_ROW_MAIN_GROUP_STARS}
Уровень группы пользователя в виде звёзд.
-
{USERS_ROW_COUNTRY_FLAG}
Флаг страны пользователя.
-
{USERS_ROW_COUNTRY}
Название страны пользователя.
-
{USERS_ROW_REGDATE}
Дата регистрации пользователя.
-
{ENTRIES_PER_PAGE}
Количество записей на текущей странице.
-
{TOTAL_ENTRIES}
Общее количество записей в разделе.
-
{PREVIOUS_PAGE}
Ссылка на предыдущую страницу.
-
{PAGINATION}
Панель с номерами страниц.
-
{NEXT_PAGE}
Ссылка на следующую страницу.
Комментарии к конструкциям <!-- ... -->
-
<!-- BEGIN: MAIN --> и <!-- END: MAIN -->
Указывают на начало и конец основного блока логики шаблона. Этот блок обрабатывается методом parse('MAIN') в XTemplate.
-
<!-- BEGIN: USERS_ROW --> и <!-- END: USERS_ROW -->
Определяют повторяющийся блок, используемый для отображения данных каждого пользователя. Этот блок обрабатывается методом parse('MAIN.USERS_ROW').
Характеристика стиля HTML/CSS/JS
-
HTML
Структура HTML кода простая, без избыточных элементов. Используются стандартные элементы, такие как <table>, <form>, <h2>, <tr>, <td>. Стиль семантический, предназначен для отображения табличных данных.
-
CSS
Классы имеют чёткие и лаконичные названия (block, marginbottom10, coltop, paddingleft10). Это позволяет быстро настраивать внешний вид через CSS. Таблицы используются для табличных данных, что соответствует хорошим практикам.
-
JS
JavaScript явно не представлен в шаблоне, что оставляет обработку интерактивных элементов на стороне модуля или других подключаемых скриптов.
<!-- BEGIN: MAIN --> <!-- Начало основного логического блока Cotonti, который будет обработан методом $t->parse('MAIN'); -->
<div class="block">
<h2 class="users">{USERS_BREADCRUMBS}</h2> <!-- Заголовок блока, содержащий навигационные "хлебные крошки" -->
<div class="marginbottom10">
<h2 class="prefs">{PHP.L.Filters}</h2> <!-- Заголовок секции фильтров -->
<form id="filter-form" action="{USERS_FILTERS_ACTION}" method="GET"> <!-- Форма для фильтрации пользователей -->
{USERS_FILTERS_PARAMS} <!-- Дополнительные параметры фильтрации (могут содержать скрытые поля) -->
<table class="marginbottom10">
<tr>
<td>
<h3>{PHP.L.Filter_search}:</h3> <!-- Заголовок фильтрации по параметрам -->
{USERS_FILTERS_COUNTRY} <!-- Фильтр по стране -->
{USERS_FILTERS_MAIN_GROUP} <!-- Фильтр по основной группе пользователей -->
{USERS_FILTERS_GROUP} <!-- Фильтр по дополнительным группам -->
</td>
<td class="paddingleft10">
<h3>{PHP.L.Username_search}:</h3> <!-- Заголовок фильтрации по имени пользователя -->
{USERS_FILTERS_SEARCH} <!-- Поле для поиска пользователей по имени -->
</td>
<td class="paddingleft10">
<h3>{PHP.L.OrderBy}:</h3> <!-- Заголовок сортировки -->
{USERS_FILTERS_SORT} <!-- Поле выбора критерия сортировки -->
{USERS_FILTERS_SORT_WAY} <!-- Поле выбора направления сортировки (по возрастанию/убыванию) -->
</td>
</tr>
</table>
<button type="submit" class="submit">{PHP.L.Submit}</button> <!-- Кнопка отправки формы фильтрации -->
</form>
</div>
<table class="cells"> <!-- Таблица списка пользователей -->
<tr>
<td class="coltop width5"></td> <!-- Пустая колонка для отступа -->
<td class="coltop width20">{USERS_TOP_NAME}</td> <!-- Заголовок колонки имени пользователя -->
<td class="coltop width20">{USERS_TOP_MAIN_GROUP}</td> <!-- Заголовок колонки основной группы пользователя -->
<td class="coltop width15">{USERS_TOP_GROUP_LEVEL}</td> <!-- Заголовок колонки уровня в группе -->
<td class="coltop width15">{USERS_TOP_COUNTRY}</td> <!-- Заголовок колонки страны пользователя -->
<td class="coltop width25">{USERS_TOP_REGISTRATION_DATE}</td> <!-- Заголовок колонки даты регистрации -->
</tr>
<!-- BEGIN: USERS_ROW --> <!-- Начало блока, который повторяется для каждого пользователя -->
<tr>
<td class="centerall">{USERS_ROW_PM}</td> <!-- Ячейка с кнопкой личного сообщения пользователю -->
<td>{USERS_ROW_NAME} {USERS_ROW_TAG}</td> <!-- Имя пользователя и его тег -->
<td>{USERS_ROW_MAIN_GROUP}</td> <!-- Основная группа пользователя -->
<td class="centerall">{USERS_ROW_MAIN_GROUP_STARS}</td> <!-- Отображение уровня пользователя в группе (например, звездочки) -->
<td class="centerall">{USERS_ROW_COUNTRY_FLAG} {USERS_ROW_COUNTRY}</td> <!-- Флаг и название страны пользователя -->
<td class="centerall">{USERS_ROW_REGDATE}</td> <!-- Дата регистрации пользователя -->
</tr>
<!-- END: USERS_ROW --> <!-- Конец блока, который повторяется для каждого пользователя -->
</table>
</div>
<p class="paging"> <!-- Блок постраничной навигации -->
<span>{PHP.L.users_usersperpage}: {ENTRIES_PER_PAGE}</span> <!-- Отображение количества пользователей на странице -->
<span>{PHP.L.users_usersinthissection}: {TOTAL_ENTRIES}</span> <!-- Общее количество пользователей в текущем разделе -->
{PREVIOUS_PAGE}{PAGINATION}{NEXT_PAGE} <!-- Кнопки навигации по страницам -->
</p>
<!-- END: MAIN --> <!-- Закрытие основного логического блока Cotonti -->
5 минут чтения Sodium Carbonate