Сторінки, статті та новини
Інструменти та плагіни
Заготовка заголовок


Опис як приклад заготовки. Приклад текстового контенту для подальшої кастомізації шаблону "Index36".

Редагувати шаблон можна на власний розсуд. Якщо у вас немає часу або знань – завжди можна замовити адаптацію шаблону, написавши мені через GitHub або особисті повідомлення на публічній сторінці маркетплейсу цифрових товарів.

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

0 Опублікована Опубліковано в: Cotonti Siena CMF Модули в Cotonti из коробки
Модуль "Users", - users.profile.tpl в Cotonti CMF

Тематическое описание файла шаблона users.edit.tpl в Cotonti CMF

1. Основное назначение файла и его место в системе Cotonti

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

2. Суть кода, выполняемые задачи и условия

Шаблон содержит:

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

  • Функционал редактирования полей (email, скрытие email, язык, часовой пояс, аватар, фото, подпись и т. д.).

  • Возможность смены пароля, включая проверку старого пароля.

  • Фильтрацию и сортировку списка пользователей (если шаблон используется в административном разделе).

  • Динамическое скрытие/показ дополнительной информации с помощью JavaScript (например, поля защиты email).

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

3. Переменные и функции, заключенные в фигурные скобки {}

Переменная / Функция Назначение
{USERS_PROFILE_BREADCRUMBS} Хлебные крошки навигации.
{USERS_PROFILE_TITLE} Заголовок страницы профиля.
{FILE "{PHP.cfg.themes_dir}/{PHP.usr.theme}/warnings.tpl"} Подключение внешнего шаблона предупреждений.
{USERS_PROFILE_FORM_SEND} URL-адрес отправки формы редактирования профиля.
{USERS_PROFILE_ID} Идентификатор редактируемого пользователя.
{USERS_PROFILE_NAME} Имя пользователя.
{USERS_PROFILE_GROUPS} Группы, к которым принадлежит пользователь.
{USERS_PROFILE_REGDATE} Дата регистрации.
{USERS_PROFILE_EMAIL} Адрес электронной почты.
{USERS_PROFILE_EMAILPASS} Поле для ввода пароля при смене email.
{USERS_PROFILE_HIDEEMAIL} Опция скрытия email.
{USERS_PROFILE_PMNOTIFY} Настройки уведомлений личных сообщений.
{USERS_PROFILE_THEME} Выбор темы оформления.
{USERS_PROFILE_LANG} Выбор языка.
{USERS_PROFILE_COUNTRY} Выбор страны.
{USERS_PROFILE_TIMEZONE} Часовой пояс.
{USERS_PROFILE_BIRTHDATE} Дата рождения.
{USERS_PROFILE_GENDER} Пол пользователя.
{USERS_PROFILE_AVATAR} Отображение аватара.
{USERS_PROFILE_PHOTO} Отображение фотографии.
{USERS_PROFILE_TEXT} Подпись пользователя.
{USERS_PROFILE_OLDPASS} Поле ввода старого пароля.
{USERS_PROFILE_NEWPASS1} Поле ввода нового пароля.
{USERS_PROFILE_NEWPASS2} Повторное поле ввода нового пароля.
{PHP.L.Update} Локализованная строка «Обновить».

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

Конструкция Описание
<!-- BEGIN: MAIN --> и <!-- END: MAIN --> Основной блок шаблона, который будет обработан через $t->parse('MAIN');.
<!-- BEGIN: USERS_PROFILE_EMAILCHANGE --> и <!-- END: USERS_PROFILE_EMAILCHANGE --> Блок, отвечающий за возможность изменения email. Отображается только при наличии соответствующих прав.
<!-- BEGIN: USERS_PROFILE_EMAILPROTECTION --> и <!-- END: USERS_PROFILE_EMAILPROTECTION --> Условный блок, содержащий JavaScript-код для защиты email.
<!-- IF {PHP.cot_modules.pm} --> и <!-- ENDIF --> Проверка наличия модуля личных сообщений (pm). Если он включен, отображаются настройки уведомлений.
<!-- IF !{PHP.cfg.forcedefaulttheme} --> и <!-- ENDIF --> Проверка, разрешено ли пользователям менять тему оформления.
<!-- IF {USERS_PROFILE_AVATAR} --> и <!-- ENDIF --> Отображение блока аватара, если он установлен.
<!-- IF {USERS_PROFILE_PHOTO} --> и <!-- ENDIF --> Отображение блока с фотографией, если она загружена.

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

  • HTML: Чистая и семантическая разметка с использованием <table>, <div> и <form>. Разметка ориентирована на админ-интерфейс.

  • CSS: Используются классы (width30, width70, paddingleft10, small, marginbottom10 и др.), вероятно, определенные в общем CSS-файле темы. Есть стили для центрирования (centerall), плавающих элементов (floatleft).

  • JavaScript: Встроенный jQuery-код, отвечающий за динамическое скрытие и показ элементов (например, "#emailnotes").

Заключение

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

 

<!-- BEGIN: MAIN --> <!-- Начало основного логического блока Cotonti, который будет обработан методом $t->parse('MAIN'); -->

<div class="block">
    <div class="breadcrumbs">{USERS_PROFILE_BREADCRUMBS}</div> <!-- Навигационные "хлебные крошки" профиля пользователя -->

    <h2 class="users">{USERS_PROFILE_TITLE}</h2> <!-- Заголовок страницы профиля пользователя -->

    {FILE "{PHP.cfg.themes_dir}/{PHP.usr.theme}/warnings.tpl"} <!-- Подключение файла с предупреждениями, если они есть -->

    <form action="{USERS_PROFILE_FORM_SEND}" method="post" enctype="multipart/form-data" name="profile">
        <!-- Форма редактирования профиля пользователя -->
        <input type="hidden" name="userid" value="{USERS_PROFILE_ID}"/> <!-- Скрытое поле с ID пользователя -->

        <table class="cells"> <!-- Таблица с данными профиля -->
            <tr>
                <td class="width30">{PHP.L.Username}:</td> <!-- Метка "Имя пользователя" -->
                <td class="width70">{USERS_PROFILE_NAME}</td> <!-- Имя пользователя -->
            </tr>

            <tr>
                <td>{PHP.L.Groupsmembership}:</td> <!-- Метка "Членство в группах" -->
                <td>
                    <div id="usergrouplist">
                        {USERS_PROFILE_GROUPS} <!-- Список групп пользователя -->
                    </div>
                </td>
            </tr>

            <tr>
                <td>{PHP.L.Registered}:</td> <!-- Метка "Дата регистрации" -->
                <td>{USERS_PROFILE_REGDATE}</td> <!-- Дата регистрации пользователя -->
            </tr>

            <!-- BEGIN: USERS_PROFILE_EMAILCHANGE --> <!-- Условный блок, если изменение email разрешено -->
            <tr>
                <td>{PHP.L.Email}:</td> <!-- Метка "Email" -->
                <td id="emailtd">
                    <div class="width50 floatleft">
                        {PHP.L.Email}:<br/>{USERS_PROFILE_EMAIL} <!-- Текущее значение email -->
                    </div>

                    <!-- BEGIN: USERS_PROFILE_EMAILPROTECTION --> <!-- Условный блок защиты email -->
                    <script type="text/javascript">
                        //<![CDATA[
                        $(document).ready(function () {
                            $("#emailnotes").hide(); // Скрытие уведомления о смене email при загрузке страницы
                            $("#emailtd").click(function () {
								$("#emailnotes").slideDown(); // Показывает уведомление при клике на email
							});
                        });
                        //]]>
                    </script>

                    <div>
                        {PHP.themelang.usersprofile_Emailpassword}:<br/>{USERS_PROFILE_EMAILPASS} 
                        <!-- Поле для ввода пароля при смене email -->
                    </div>

                    <div class="small" id="emailnotes">{PHP.themelang.usersprofile_Emailnotes}</div> 
                    <!-- Примечания о смене email, изначально скрыты -->
                    <!-- END: USERS_PROFILE_EMAILPROTECTION --> <!-- Закрытие блока защиты email -->
                </td>
            </tr>
            <!-- END: USERS_PROFILE_EMAILCHANGE --> <!-- Закрытие блока изменения email -->
            <tr>
                <td>{PHP.L.users_hideemail}:</td> <!-- Метка "Скрыть Email" -->
                <td>{USERS_PROFILE_HIDEEMAIL}</td> <!-- Поле скрытия email -->
            </tr>

            <!-- IF {PHP.cot_modules.pm} --> <!-- Условие: отображать этот блок, если модуль ЛС (личных сообщений) включен -->
            <tr>
                <td>{PHP.L.users_pmnotify}:</td> <!-- Метка "Уведомления о личных сообщениях" -->
                <td>
                    {USERS_PROFILE_PMNOTIFY} <!-- Выбор уведомлений -->
                    <p class="small">{PHP.L.users_pmnotifyhint}</p> <!-- Подсказка -->
                </td>
            </tr>
            <!-- ENDIF --> <!-- Закрытие условия о наличии модуля ЛС -->

            <!-- IF !{PHP.cfg.forcedefaulttheme} --> <!-- Условие: показывать выбор темы, если не принудительно установлен стандартный шаблон -->
            <tr>
                <td>{PHP.L.Theme}:</td> <!-- Метка "Тема оформления" -->
                <td>{USERS_PROFILE_THEME}</td> <!-- Выпадающий список выбора темы -->
            </tr>
            <!-- ENDIF --> <!-- Закрытие условия -->

            <tr>
                <td>{PHP.L.Language}:</td> <!-- Метка "Язык" -->
                <td>{USERS_PROFILE_LANG}</td> <!-- Выпадающий список выбора языка -->
            </tr>

            <tr>
                <td>{PHP.L.Country}:</td> <!-- Метка "Страна" -->
                <td>{USERS_PROFILE_COUNTRY}</td> <!-- Выпадающий список выбора страны -->
            </tr>

            <tr>
                <td>{PHP.L.Timezone}:</td> <!-- Метка "Часовой пояс" -->
                <td>{USERS_PROFILE_TIMEZONE}</td> <!-- Выбор часового пояса -->
            </tr>

            <tr>
                <td>{PHP.L.Birthdate}:</td> <!-- Метка "Дата рождения" -->
                <td>{USERS_PROFILE_BIRTHDATE}</td> <!-- Поле ввода даты рождения -->
            </tr>

            <tr>
                <td>{PHP.L.Gender}:</td> <!-- Метка "Пол" -->
                <td>{USERS_PROFILE_GENDER}</td> <!-- Выбор пола пользователя -->
            </tr>

            <!-- IF {USERS_PROFILE_AVATAR} --> <!-- Условие: если у пользователя есть аватар -->
            <tr>
                <td>{PHP.L.Avatar}:</td> <!-- Метка "Аватар" -->
                <td>{USERS_PROFILE_AVATAR}</td> <!-- Отображение аватара -->
            </tr>
            <!-- ENDIF --> <!-- Закрытие условия -->

            <!-- IF {USERS_PROFILE_PHOTO} --> <!-- Условие: если у пользователя есть фото -->
            <tr>
                <td>{PHP.L.Photo}:</td> <!-- Метка "Фото" -->
                <td>{USERS_PROFILE_PHOTO}</td> <!-- Отображение фото -->
            </tr>
            <!-- ENDIF --> <!-- Закрытие условия -->

            <tr>
                <td>{PHP.L.Signature}:</td> <!-- Метка "Подпись" -->
                <td>{USERS_PROFILE_TEXT}</td> <!-- Поле подписи пользователя -->
            </tr>

            <tr>
                <td>
                    {PHP.L.users_newpass}: <!-- Метка "Новый пароль" -->
                    <p class="small">{PHP.L.users_newpasshint1}</p> <!-- Подсказка -->
                </td>
                <td id="change-password">
                    {USERS_PROFILE_OLDPASS} <!-- Поле ввода старого пароля -->
                    <p class="small marginbottom10">{PHP.L.users_oldpasshint}</p> <!-- Подсказка по старому паролю -->
                    {USERS_PROFILE_NEWPASS1} &nbsp; {USERS_PROFILE_NEWPASS2} <!-- Поля ввода нового пароля -->
                    <p class="small">{PHP.L.users_newpasshint2}</p> <!-- Подсказка по новому паролю -->
                </td>
            </tr>

            <tr>
                <td colspan="2" class="valid">
                    <button type="submit">{PHP.L.Update}</button> <!-- Кнопка отправки формы -->
                </td>
            </tr>
        </table>
    </form>
</div>

<!-- END: MAIN --> <!-- Завершение основного логического блока Cotonti -->

1. Основные элементы шаблона

Шаблон представляет собой страницу редактирования профиля пользователя в Cotonti. Он содержит:

  • Основную обертку (<div class="block">).
  • Заголовок профиля (<h2 class="users">{USERS_PROFILE_TITLE}</h2>).
  • Форма (<form>), содержащая поля для редактирования профиля.

2. Обрабатываемые параметры

Основная информация о пользователе

  • {USERS_PROFILE_NAME} — имя пользователя.
  • {USERS_PROFILE_GROUPS} — группы, к которым он принадлежит.
  • {USERS_PROFILE_REGDATE} — дата регистрации.

Email и его защита

  • {USERS_PROFILE_EMAIL} — текущий email.
  • {USERS_PROFILE_EMAILPASS} — пароль для изменения email.
  • {USERS_PROFILE_EMAILCHANGE} — условный блок, включающий поле изменения email, если это разрешено.
  • {USERS_PROFILE_EMAILPROTECTION} — условный блок, включающий защиту email.

Важный момент:
В коде есть скрипт, который скрывает уведомление (#emailnotes) и показывает его по клику.

Дополнительные параметры

  • {USERS_PROFILE_HIDEEMAIL} — настройка скрытия email.
  • {USERS_PROFILE_PMNOTIFY} — уведомления о личных сообщениях (если включен модуль pm).
  • {USERS_PROFILE_THEME} — выбор темы оформления (если разрешено изменение).
  • {USERS_PROFILE_LANG} — выбор языка.
  • {USERS_PROFILE_COUNTRY} — страна.
  • {USERS_PROFILE_TIMEZONE} — часовой пояс.
  • {USERS_PROFILE_BIRTHDATE} — дата рождения.
  • {USERS_PROFILE_GENDER} — пол.

Аватар и фото

  • {USERS_PROFILE_AVATAR} — отображение аватара (если установлен).
  • {USERS_PROFILE_PHOTO} — отображение фото (если загружено).

Пароль

  • {USERS_PROFILE_OLDPASS} — поле ввода старого пароля.
  • {USERS_PROFILE_NEWPASS1} и {USERS_PROFILE_NEWPASS2} — поля для ввода нового пароля.

3. Условные блоки и логика Cotonti

Шаблон использует несколько условных блоков, которые рендерятся только при определенных условиях:

  • <!-- IF {PHP.cot_modules.pm} --> — отображает уведомления о ЛС, если модуль ЛС активирован.
  • <!-- IF !{PHP.cfg.forcedefaulttheme} --> — разрешает выбор темы, если не принудительно задана.
  • <!-- IF {USERS_PROFILE_AVATAR} --> — показывает аватар, если он установлен.
  • <!-- IF {USERS_PROFILE_PHOTO} --> — показывает фото, если оно загружено.

4. Выводы

  • Код строго следует логике Cotonti, используя переменные PHP для локализации {PHP.L.*}.
  • Используются условные конструкции Cotonti для отображения только нужных элементов.
  • JavaScript используется минимально — только для защиты email.
  • Весь контент заворачивается в <!-- BEGIN: MAIN --> / <!-- END: MAIN -->, что указывает на правильную работу с XTemplate.

Шаблон написан корректно, соответствует структуре Cotonti CMF и не содержит явных ошибок.

Коментарі відсутні
Додавання коментарів доступне лише зареєстрованим користувачам
Обліковий запис