Pages, Articles & News
Tools & Plugins
Example / Placeholder Title


Description as an example placeholder. Sample text content for further customization of the "Index36" template.

You are free to edit and customize the template however you like. If you don’t have time or enough knowledge — you can always order template adaptation by contacting me via GitHub or private messages on the digital goods marketplace.

Модуль "Users", - users.tpl в Cotonti CMF

отвечает за визуальное отображение информации о пользователях, такие как список пользователей, фильтры для поиска, сортировку и навигацию по страницам

Модуль "Users", - users.tpl в Cotonti CMF

Назначение файла users.tpl и его место в системе Cotonti

Файл users.tpl является частью системы шаблонов XTemplate, используемой в Cotonti CMF, и расположен в папке /modules/users/tpl/. Его основное назначение — предоставлять структуру и дизайн интерфейса модуля "Пользователи" (Users). Этот файл отвечает за визуальное отображение информации о пользователях, такие как список пользователей, фильтры для поиска, сортировку и навигацию по страницам. Шаблон тесно взаимодействует с PHP-кодом модуля, который передаёт в шаблон данные через переменные, заключённые в фигурные скобки {}.

Шаблон users.tpl структурирован так, чтобы пользователи могли легко фильтровать, сортировать и просматривать информацию о других зарегистрированных пользователях. Он также позволяет разработчикам кастомизировать внешний вид без изменений в коде модуля, сохраняя разделение логики и представления.


Содержание кода: задачи и условия

  1. Фильтры и сортировка
    Шаблон включает форму фильтрации, которая позволяет пользователям искать других пользователей по имени, стране, основной группе и другим критериям. Также присутствуют поля для выбора порядка сортировки и её направления (по возрастанию или убыванию).

  2. Отображение списка пользователей
    Центральный элемент шаблона — таблица, содержащая данные о пользователях: имя, группа, страна, дата регистрации и другие параметры. Для каждого пользователя создаётся отдельная строка с данными, которые передаются через логические блоки <!-- BEGIN: USERS_ROW --> и <!-- END: USERS_ROW -->.

  3. Навигация по страницам
    В нижней части шаблона предусмотрена панель пагинации, отображающая текущую страницу, количество записей на странице и общее количество записей в разделе. Также реализованы кнопки перехода между страницами.


Список всех переменных и их назначение

  1. {USERS_BREADCRUMBS}
    Выводит навигационную цепочку (breadcrumbs), помогающую пользователю ориентироваться на сайте.

  2. {PHP.L.Filters}
    Локализованная строка "Фильтры", используемая в заголовке формы фильтрации.

  3. {USERS_FILTERS_ACTION}
    URL для отправки формы фильтрации.

  4. {USERS_FILTERS_PARAMS}
    Дополнительные скрытые параметры, которые добавляются в форму фильтрации.

  5. {USERS_FILTERS_COUNTRY}
    Поле выбора страны для фильтрации.

  6. {USERS_FILTERS_MAIN_GROUP}
    Поле выбора основной группы для фильтрации.

  7. {USERS_FILTERS_GROUP}
    Поле выбора дополнительных групп для фильтрации.

  8. {USERS_FILTERS_SEARCH}
    Поле для ввода имени пользователя для поиска.

  9. {USERS_FILTERS_SORT}
    Поле выбора параметра сортировки.

  10. {USERS_FILTERS_SORT_WAY}
    Поле выбора направления сортировки (по возрастанию или убыванию).

  11. {PHP.L.Submit}
    Локализованная строка "Отправить", используемая на кнопке формы.

  12. {USERS_TOP_NAME}
    Заголовок колонки с именем пользователя.

  13. {USERS_TOP_MAIN_GROUP}
    Заголовок колонки с основной группой пользователя.

  14. {USERS_TOP_GROUP_LEVEL}
    Заголовок колонки с уровнем группы.

  15. {USERS_TOP_COUNTRY}
    Заголовок колонки с названием страны.

  16. {USERS_TOP_REGISTRATION_DATE}
    Заголовок колонки с датой регистрации.

  17. {USERS_ROW_PM}
    Иконка или кнопка для отправки личного сообщения пользователю.

  18. {USERS_ROW_NAME}
    Имя пользователя.

  19. {USERS_ROW_TAG}
    Дополнительный тег или статус пользователя.

  20. {USERS_ROW_MAIN_GROUP}
    Основная группа пользователя.

  21. {USERS_ROW_MAIN_GROUP_STARS}
    Уровень группы пользователя в виде звёзд.

  22. {USERS_ROW_COUNTRY_FLAG}
    Флаг страны пользователя.

  23. {USERS_ROW_COUNTRY}
    Название страны пользователя.

  24. {USERS_ROW_REGDATE}
    Дата регистрации пользователя.

  25. {ENTRIES_PER_PAGE}
    Количество записей на текущей странице.

  26. {TOTAL_ENTRIES}
    Общее количество записей в разделе.

  27. {PREVIOUS_PAGE}
    Ссылка на предыдущую страницу.

  28. {PAGINATION}
    Панель с номерами страниц.

  29. {NEXT_PAGE}
    Ссылка на следующую страницу.


Комментарии к конструкциям <!-- ... -->

  1. <!-- BEGIN: MAIN --> и <!-- END: MAIN -->
    Указывают на начало и конец основного блока логики шаблона. Этот блок обрабатывается методом parse('MAIN') в XTemplate.

  2. <!-- BEGIN: USERS_ROW --> и <!-- END: USERS_ROW -->
    Определяют повторяющийся блок, используемый для отображения данных каждого пользователя. Этот блок обрабатывается методом parse('MAIN.USERS_ROW').


Характеристика стиля HTML/CSS/JS

  1. HTML
    Структура HTML кода простая, без избыточных элементов. Используются стандартные элементы, такие как <table>, <form>, <h2>, <tr>, <td>. Стиль семантический, предназначен для отображения табличных данных.

  2. CSS
    Классы имеют чёткие и лаконичные названия (block, marginbottom10, coltop, paddingleft10). Это позволяет быстро настраивать внешний вид через CSS. Таблицы используются для табличных данных, что соответствует хорошим практикам.

  3. 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}&nbsp;{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 -->

 

No comments yet
Only registered users can post new comments
Account