Плагин Userfields для Cotonti 0.9.26
Выводим дополнительные поля пользователя где угодно, в любом шаблоне, в любой локации модуля или плагина, универсальным способом и без специальных префиксов.
Плагин Userfields для CMS Cotonti позволяет создавать и управлять дополнительными пользовательскими полями (например, номер телефона, название компании, адрес, телеграм) без изменения таблицы cot_users. Использует таблицы cot_userfield_types (типы полей) и cot_userfield_values (значения полей) для масштабируемости и удобства. Поля интегрируются в профили пользователей, админ-панель и шаблоны (список пользователей, статьи, форумы, модуль Multistore).

Основные возможности
- Создание, редактирование и удаление типов полей с уникальными кодами, названиями и порядком сортировки через админ-панель.
- Хранение значений в отдельной таблице, привязанной к ID пользователя.
- Редактирование полей в профиле (
users.profile.tpl) и админском редакторе (users.edit.tpl). - Вывод полей в списках пользователей (
users.tpl), страницах профиля (users.details.tpl) и других шаблонах (page.tpl,mstore.tpl,forums.posts.tpl) через теги Cotonti. - Поддержка индивидуальных тегов (например,
{USERFIELDS_CELL_NUMBER}), цикла для всех полей (<!-- BEGIN: USERFIELDS -->) и HTML-блока ({USERFIELDS_ROWS_HTML}или{USERS_ROW_FIELD_ROWS_HTML}). - Автоматическое сохранение значений при обновлении профиля или данных пользователя.
- Сортировка полей по параметру
order_num. - Тестовые поля (
cell_number,company_name) для быстрого старта. - Удобная админ-панель для управления полями.
Типы полей:
- Текст
- Целое число
- Валюта
- Дробное число
- Текстовая область
- Выпадающий список
- Радиокнопки
- Чекбокс
- Дата/Время
- Страна
- Диапазон чисел
- Список чекбоксов
Требования
- Cotonti CMS 0.9.26 или выше.
- PHP 8.4+.
- Активный модуль
users. - MySQL 8.0 с поддержкой InnoDB (для внешних ключей).
Установка
- Подготовка файлов:
- Скачайте исходный код с репозитория на GitHub.
- Распакуйте
cot-userfields-main.zipи загрузите папкуuserfieldsв директориюpluginsв корне Cotonti.
- Установка через админ-панель:
- Войдите в админ-панель (
/admin.php). - Перейдите в Администрирование > Расширения > User Fields.
- Найдите плагин Userfields и нажмите Установить.
- Плагин создаёт таблицы
cot_userfield_typesиcot_userfield_values, добавляя тестовые поля:cell_number(Номер мобильного телефона, порядок 1) иcompany_name(Название компании, порядок 2). - Эти поля — примеры; их можно удалить, отредактировать или создать новые.
- Войдите в админ-панель (
- Список файлов плагина:
userfields.setup.php(конфигурация плагина).userfields.install.sql(создание таблиц и тестовых данных).userfields.uninstall.sql(удаление таблиц).userfields.admin.php(логика админ-панели).userfields.admin.tpl(шаблон админ-панели).userfields.ru.lang.php(русская локализация).userfields.en.lang.php(английская локализация).userfields.functions.php(основные функции).userfields.users.details.tags.php(теги для страницы профиля).userfields.users.profile.tags.php(теги для редактирования профиля).userfields.users.edit.tags.php(теги для админского редактирования).userfields.users.profile.update.done.php(сохранение профиля).userfields.users.edit.update.done.php(сохранение в админке).userfields.users.loop.php(вывод в списке пользователей).userfields.usertags.php(интеграция сusertags) выводим поля в любые шаблоны без угадывания префиксов для конкретного шаблона, поля выводим везде, где вы можете увидеть никнейм пользователя и универсальным способом, например mstore.index.tpl, mstore.list.tpl, page.tpl, page.list.tpl, forums.posts.tpl и.п..
Структура файлов
/userfields/
├── inc/
│ └── userfields.functions.php # Основные функции
├── lang/
│ ├── userfields.ru.lang.php # Русская локализация
│ ├── userfields.en.lang.php # Английская локализация
├── setup/
│ ├── userfields.install.sql # SQL для создания таблиц
│ └── userfields.uninstall.sql # SQL для удаления таблиц
├── tpl/
│ └── userfields.admin.tpl # Шаблон для админ-панели
├── userfields.admin.php # Логика управления полями
├── userfields.global.php # Подключение языковых файлов
├── userfields.setup.php # Конфигурация плагина
├── userfields.users.details.tags.php # Теги для вывода полей на страницы публичного профиля пользователей users.details.tpl
├── userfields.users.edit.tags.php # Теги для админского редактирования users.edit.tpl
├── userfields.users.edit.update.done.php # Сохранение изменений администратором
├── userfields.users.loop.php # Вывод полей в списке пользователей users.tpl
├── userfields.users.profile.tags.php # Теги для редактирования профиля users.profile.tpl
├── userfields.users.profile.update.done.php # Сохранение изменений пользователем
└── userfields.usertags.php # Теги для интеграции в другие модули и плагины на своих условиях без специальных преффиксов
- Деинсталляция:
- В админ-панели: Администрирование > Расширения > Userfields > Деинсталлировать.
- Выполняется
userfields.uninstall.sql, удаляющий таблицы. - Удалите папку
plugins/userfieldsвручную.
- Устранение неполадок:
- читать инструкцию по установке или писать на форуме поддержки
Управление полями в админ-панели
Админ-панель: Администрирование > Другие > Userfields .
Интерфейс
- Заголовок: "Управление дополнительными полями пользователей".
- Список типов полей: Таблица с колонками: Код, Название, Порядок сортировки, Редактировать, Удалить.
- Формы: Для добавления/редактирования типов полей.
Добавление типа поля
- Нажмите Добавить тип поля.
- Форма:
- Код (code): Уникальный идентификатор (латинские буквы, цифры, нижнее подчеркивание; макс. 50 символов). Используется в тегах (например,
cell_number→USERFIELDS_CELL_NUMBER). Обязательное, уникальное. - Название (title): Отображаемое имя (например, "Контактный телефон"; макс. 100 символов). Обязательное.
- Порядок сортировки (order_num): Целое число (1 — первый, 2 — второй). Определяет порядок вывода (меньше — выше). Обязательное, по умолчанию 0.
- Код (code): Уникальный идентификатор (латинские буквы, цифры, нижнее подчеркивание; макс. 50 символов). Используется в тегах (например,
- Нажмите Сохранить. Ошибки (дубликат кода, пустые поля) будут отображены.
Редактирование типа поля
- Нажмите Редактировать рядом с полем.
- Измените код, название или порядок (код должен быть уникальным).
- Нажмите Сохранить. Обновите теги в шаблонах, если код изменился.
Удаление типа поля
- Нажмите Удалить и подтвердите.
- Удаляет тип поля и связанные значения в
cot_userfield_values(черезON DELETE CASCADE).
Определение полей
- id: Автоматический уникальный ID.
- code: Идентификатор для тегов (
USERFIELDS_CODE— значение,USERFIELDS_CODE_TITLE— название). - title: Название для форм и вывода.
- order_num: Порядок вывода.
Заполнение полей
- Пользователями: В профиле (
users.profile.tpl) поля отображаются как таблица с названием и полем ввода. Сохраняются при обновлении профиля. - Администраторами: В редакторе (
users.edit.tpl) — аналогичная таблица для любого пользователя. Сохраняется при обновлении. - Формат: Устанавливается в админке плагина. Поля необязательные.
Интеграция в шаблоны
Плагин интегрируется легко и просто в модуль users и также просто в шаблоны других модулей (mstore, page, forums).
Просто внимательно читайте инструкцию и используйте один какой-то способ интеграции в свои шаблоны.
Теги используют код поля в верхнем регистре (например, в админке при создании поля пишем cell_number а выводим в шаблонах уже {USERFIELDS_CELL_NUMBER}).
Все теги обязательно должны оборачиваются в условие проверки функции<!-- IF {PHP|cot_plugin_active('userfields')} --> тут поля ваши <!-- ENDIF --> - так проверяем на уровне движка установлен ли плагин и исключаем ряд возможных глупых ошибок.
Для каждого шаблона есть два способа интеграции: циклом (автоматический вывод всех полей) и индивидуально (кастомная стилизация конкретных полей).
1. Шаблоны модуля users
--
users.profile.tpl (Редактирование профиля) использовать один какой-то способ!!!
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
- Выводит все поля автоматически с названием и ввода значений, в виде цикла (по-простому - списком, все поля, которые вы создали в админке).
Внутри
<form>(например, после{USERS_PROFILE_COUNTRY}) добавьте:<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="userfields-block"> <!-- BEGIN: USERFIELDS --> <div> <label>{USERFIELDS_FIELD_TITLE}</label> {USERFIELDS_FIELD} </div> <!-- END: USERFIELDS --> </div> <!-- ENDIF -->
2. ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
- Выводит конкретные поля с индивидуальной стилизацией, используя теги без специальных префиксов (например, просто
{USERFIELDS_CELL_NUMBER}поле для ввода и сохранения номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- название поля, например "Контактный телефон", которое вы указываетет в админке при создании поля). Внутри
<form>(например, после{USERS_PROFILE_COUNTRY}) добавьте:<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <label class="userfield-title text-primary">{USERFIELDS_CELL_NUMBER_TITLE}:</label> <div class="userfield-value">{USERFIELDS_CELL_NUMBER}</div> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield text-danger"> <label class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</label> <div class="userfield-value">{USERFIELDS_COMPANY_NAME}</div> </div> <!-- ENDIF --> </div> <!-- ENDIF -->- Выводит конкретные поля с индивидуальной стилизацией и порядком в списке.
- Каждое поле вы можете индивидуально стилизировать, например, в оформление поля добавить иконку, разместить текст подсказки, добавить цвет и размер, и т.п.. --
users.edit.tpl (Админское редактирование) использовать один какой-то способ!!!
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
- Выводит все поля автоматически с названием и ввода значений, в виде цикла (по-простому - списком, все поля, которые вы создали в админке).
Внутри
<form>(например, после{USERS_EDIT_COUNTRY}) добавьте:<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="userfields-block"> <!-- BEGIN: USERFIELDS --> <div> <label>{USERFIELDS_FIELD_TITLE}</label> {USERFIELDS_FIELD} </div> <!-- END: USERFIELDS --> </div> <!-- ENDIF -->
2. ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
- Выводит конкретные поля с индивидуальной стилизацией, используя теги без специальных префиксов (например, просто
{USERFIELDS_CELL_NUMBER}поле для ввода и сохранения номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- название поля, например "Контактный телефон", которое вы указываетет в админке при создании поля). Внутри
<form>(например, после{USERS_EDIT_COUNTRY}) добавьте:<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <label class="userfield-title text-primary">{USERFIELDS_CELL_NUMBER_TITLE}:</label> <div class="userfield-value">{USERFIELDS_CELL_NUMBER}</div> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield text-danger"> <label class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</label> <div class="userfield-value">{USERFIELDS_COMPANY_NAME}</div> </div> <!-- ENDIF --> </div> <!-- ENDIF -->- Выводит конкретные поля с индивидуальной стилизацией и порядком в списке.
- Каждое поле вы можете индивидуально стилизировать, например, в оформление поля добавить иконку, разместить текст подсказки, добавить цвет и размер, и т.п..
--
users.details.tpl (Страница публичного профиля) использовать один какой-то способ!!!
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
- Выводит все поля автоматически с названием и значением, в виде цикла (по-простому - списком, всё, что было заполнено при редактировании профиля).
После
{USERS_DETAILS_COUNTRY_FLAG} {USERS_DETAILS_COUNTRY}добавьте:<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="userfields-details"> <h3>Дополнительные поля</h3> <!-- BEGIN: USERFIELDS_DETAILS --> <div class="userfield"> <label class="userfield-title text-success">{USERFIELDS_FIELD_TITLE}:</label> <div class="userfield-value">{USERFIELDS_FIELD}</div> </div> <!-- END: USERFIELDS_DETAILS --> </div> <!-- ENDIF -->
2. ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
- Выводит конкретные поля с индивидуальной стилизацией, используя теги без специальных префиксов (например, просто
{USERFIELDS_CELL_NUMBER}значение номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- название поля, например "Контактный телефон"). После
{USERS_DETAILS_COUNTRY_FLAG} {USERS_DETAILS_COUNTRY}добавьте:<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_CELL_NUMBER_TITLE}:</span> <span class="userfield-value"> <a href="tel:{USERFIELDS_CELL_NUMBER}" class="fw-semibold">{USERFIELDS_CELL_NUMBER}</a> </span> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</span> <span class="userfield-value">{USERFIELDS_COMPANY_NAME}</span> </div> <!-- ENDIF --> </div> <!-- ENDIF -->- Каждое поле вы можете индивидуально стилизировать, например, сделать кликабельный номер телефона, или в оформление поля добавить иконку и т.п..
--
users.tpl (Список пользователей) использовать один какой-то способ
используется логика userfields.users.loop.php
- Внутри цикла товаров
<!-- BEGIN: USERS_ROW -->и<!-- END: USERS_ROW --> - Например, после
{USERS_ROW_NAME}добавьте:
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
Выводит все поля автоматически в виде цикла с названием и значением.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- BEGIN: USERFIELDS --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_FIELD_TITLE}:</span> <span class="userfield-value">{USERFIELDS_FIELD}</span> </div> <!-- END: USERFIELDS --> </div> <!-- ENDIF -->
2 ЛИБО одним тегом предформатированный HTML-блок (для крайне ленивых)
Выводит все поля автоматически в виде цикла с названием и значением, но это уже предформатированный HTML-блок.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <hr> {USERS_ROW_FIELD_ROWS_HTML} </div> <!-- ENDIF -->
3 ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
Выводит конкретные поля с индивидуальной стилизацией, используя теги без префиксов специальных (например, просто
{USERFIELDS_CELL_NUMBER}значение номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- название поля, например "Контактный телефон").<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_CELL_NUMBER_TITLE}:</span> <span class="userfield-value"> <a href="tel:{USERFIELDS_CELL_NUMBER}" class="fw-semibold">{USERFIELDS_CELL_NUMBER}</a> </span> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</span> <span class="userfield-value">{USERFIELDS_COMPANY_NAME}</span> </div> <!-- ENDIF --> </div> <!-- ENDIF -->
--
2. Другие модули (через usertags)
Плагин поддерживает интеграцию с другими модулями, который генерирует теги без префиксов ваших расширений для цикла USERFIELDS и индивидуальных полей (например, USERFIELDS_CELL_NUMBER, USERFIELDS_ROWS_HTML). Ниже приведены исправленные интеграции, вся логика в userfields.usertags.php, без использования префиксов.
page.tpl (Страница статьи) использовать один какой-то способ
- Например, после
{PAGE_OWNER_NAME}или в любом удобном месте добавьте
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
Выводит все поля автоматически в виде цикла с названием и значением.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- BEGIN: USERFIELDS --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_FIELD_TITLE}:</span> <span class="userfield-value">{USERFIELDS_FIELD}</span> </div> <!-- END: USERFIELDS --> </div> <!-- ENDIF -->
2 ЛИБО одним тегом предформатированный HTML-блок (для крайне ленивых)
Выводит все поля автоматически в виде цикла с названием и значением, но это уже предформатированный HTML-блок.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <hr> {USERFIELDS_ROWS_HTML} </div> <!-- ENDIF -->
3 ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
Выводит конкретные поля с индивидуальной стилизацией, используя теги без префиксов специальных (например, просто
{USERFIELDS_CELL_NUMBER}значение номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- название поля, например "Контактный телефон").<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_CELL_NUMBER_TITLE}:</span> <span class="userfield-value"> <a href="tel:{USERFIELDS_CELL_NUMBER}" class="fw-semibold">{USERFIELDS_CELL_NUMBER}</a> </span> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</span> <span class="userfield-value">{USERFIELDS_COMPANY_NAME}</span> </div> <!-- ENDIF --> </div> <!-- ENDIF -->
--
mstore.index.tpl / mstore.list.tpl (Списки товаров) использовать один какой-то способ
- Внутри цикла товаров
<!-- BEGIN: MSTORE_ROW -->и<!-- END: MSTORE_ROW -->или<!-- BEGIN: LIST_ROW -->и<!-- END: LIST_ROW --> - Например, после
{MSTORE_ROW_TITLE}добавьте:
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
Выводит все поля автоматически в виде цикла с названием и значением.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- BEGIN: USERFIELDS --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_FIELD_TITLE}:</span> <span class="userfield-value">{USERFIELDS_FIELD}</span> </div> <!-- END: USERFIELDS --> </div> <!-- ENDIF -->
2 ЛИБО одним тегом предформатированный HTML-блок (для крайне ленивых)
Выводит все поля автоматически в виде цикла с названием и значением, но это уже предформатированный HTML-блок.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <hr> {USERFIELDS_ROWS_HTML} </div> <!-- ENDIF -->
3 ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
Выводит конкретные поля с индивидуальной стилизацией, используя теги без префиксов специальных (например, просто
{USERFIELDS_CELL_NUMBER}значение номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- это название поля, например "Контактный телефон").<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_CELL_NUMBER_TITLE}:</span> <span class="userfield-value"> <a href="tel:{USERFIELDS_CELL_NUMBER}" class="fw-semibold">{USERFIELDS_CELL_NUMBER}</a> </span> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</span> <span class="userfield-value">{USERFIELDS_COMPANY_NAME}</span> </div> <!-- ENDIF --> </div> <!-- ENDIF -->
--
mstore.tpl (Страница товара) использовать один какой-то способ
- Например, после
{MSTORE_OWNER_NAME}добавьте:
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
Выводит все поля автоматически в виде цикла с названием и значением.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- BEGIN: USERFIELDS --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_FIELD_TITLE}:</span> <span class="userfield-value">{USERFIELDS_FIELD}</span> </div> <!-- END: USERFIELDS --> </div> <!-- ENDIF -->
2 ЛИБО одним тегом предформатированный HTML-блок (для крайне ленивых)
Выводит все поля автоматически в виде цикла с названием и значением, но это уже предформатированный HTML-блок.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <hr> {USERFIELDS_ROWS_HTML} </div> <!-- ENDIF -->
3 ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
Выводит конкретные поля с индивидуальной стилизацией, используя теги без префиксов специальных (например, просто
{USERFIELDS_CELL_NUMBER}значение номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- название поля, например "Контактный телефон").<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_CELL_NUMBER_TITLE}:</span> <span class="userfield-value"> <a href="tel:{USERFIELDS_CELL_NUMBER}" class="fw-semibold">{USERFIELDS_CELL_NUMBER}</a> </span> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</span> <span class="userfield-value">{USERFIELDS_COMPANY_NAME}</span> </div> <!-- ENDIF --> </div> <!-- ENDIF -->
--
forums.posts.tpl (Посты форума) использовать один какой-то способ
1 ЛИБО Циклом (автоматический вывод всех полей) это для ленивых:
- Например, после
{FORUMS_POSTS_ROW_USER_NAME}в блоке поста добавьте: Выводит все поля автоматически в виде цикла с названием и значением
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- BEGIN: USERFIELDS --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_FIELD_TITLE}:</span> <span class="userfield-value">{USERFIELDS_FIELD}</span> </div> <!-- END: USERFIELDS --> </div> <!-- ENDIF -->
2 ЛИБО одним тегом предформатированный HTML-блок (для крайне ленивых)
Выводит все поля автоматически в виде цикла с названием и значением, но это уже предформатированный HTML-блок.
<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <hr> {USERFIELDS_ROWS_HTML} </div> <!-- ENDIF -->
3 ЛИБО Индивидуально (кастомная стилизация полей) рекомендуемый способ, не для ленивых:
Выводит конкретные поля с индивидуальной стилизацией, используя теги без префиксов специальных (например, просто
{USERFIELDS_CELL_NUMBER}значение номера телефона и{USERFIELDS_CELL_NUMBER_TITLE}- название поля, например "Контактный телефон").<!-- IF {PHP|cot_plugin_active('userfields')} --> <div class="row mb-3"> <!-- IF {USERFIELDS_CELL_NUMBER} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_CELL_NUMBER_TITLE}:</span> <span class="userfield-value"> <a href="tel:{USERFIELDS_CELL_NUMBER}" class="fw-semibold">{USERFIELDS_CELL_NUMBER}</a> </span> </div> <!-- ENDIF --> <!-- IF {USERFIELDS_COMPANY_NAME} --> <div class="userfield"> <span class="userfield-title">{USERFIELDS_COMPANY_NAME_TITLE}:</span> <span class="userfield-value">{USERFIELDS_COMPANY_NAME}</span> </div> <!-- ENDIF --> </div> <!-- ENDIF -->
--
Поддержка
Обсуждение плагина, вопросы и помощь вотдельной теме на форуме.
Лицензия
BSD License. Copyright (c) webitproff 2025.
доброго времени суток, а в чем смысл или преимущества плагина, если есть в движке экстраполя и их тоже можно добавлять сколько угодно?
#361 Quentin:
доброго времени суток, а в чем смысл или преимущества плагина, если есть в движке экстраполя и их тоже можно добавлять сколько угодно?
попробую ответить наглядно, вот пример только по одному пользователю:
| Поле | Значение |
| user_id | 12 |
| user_banexpire | 0 |
| user_name | Website_Builder |
| user_password | 886b3a83469a3c2bcad463acbe6504c2d******95085b532542d77b4e62e39e8 |
| user_passfunc | sha256 |
| user_passsalt | 23119401******c2 |
| user_maingrp | 4 |
| user_country | ru |
| user_timezone | Europe/Helsinki |
| user_text | Страсть. Преданность. Сообщество. Мы - демонстрационная команда Avada Мы - творческая и преданная своему делу демонстрационная группа людей, которые любят WordPress, наших клиентов и онлайн-сообщество. В 2012 году мы задались целью создать идеальный конструктор веб-сайтов; так родилась компания Avada. Строим свое будущее Avada стала темой продаж № 1 на Themeforest с момента своего запуска в 2012 году, с постоянно растущей клиентской базой, насчитывающей 911 746 новичков, маркетологов и профессионалов. Наше основное внимание всегда было сосредоточено на том, чтобы Avada сделала ваш рабочий процесс веб-дизайна более доступным и приятным. |
| user_birthdate | 2013-04-01 |
| user_gender | U (не указан) |
| user_email | website_builder@*****.com |
| user_hideemail | 1 (скрыт) |
| user_theme | marketplace |
| user_scheme | default |
| user_lang | ru |
| user_regdate | 1693563290 (01.09.2023 12:14:50 UTC) |
| user_lastlog | 1695686256 (26.09.2023 00:37:36 UTC) |
| user_lastvisit | 1700648964 (22.11.2024 08:29:24 UTC) |
| user_lastip | 141.101.96.77 |
| user_logcount | 12 |
| user_sid | 70****368270a9247dac05ef7****f5afca3167077280dffe5****e8cbddb2dc |
| user_sidtime | 1693563439 (01.09.2023 12:17:19 UTC) |
| user_lostpass | fe9c10b04480******60ed5aef7****** |
| user_auth | (пусто) |
| user_token | ce0cb4c217874411 |
| user_cats | dizayn,razrabotka-po |
| user_usergroup | 4 |
| user_avatar | datas/avatars/12-member-luke-400x300-1.jpg |
| user_photo | (пусто) |
| user_adress_local | (пусто) |
| user_facebook | https://www.facebook.com/groups/********02687184 |
| user_first_second_name | Авадар Лукович |
| user_instagram | https://www.instagram.com/the****n/ |
| user_name_company | Website_Builder |
| user_phone_contact | +*******-55-55 |
| user_telegram | (пусто) |
| user_time_working | 10:00 - 21:00 |
| user_whats_app | +******55555 |
| user_www_site | https://a*****.com/ |
| user_youtube_link | https://www.youtube.com/c/****os |
| user_region | 4925 |
| user_city | 1924532 |
| user_postcount | 0 |
| user_prjsenderdate | 1693563290 (01.09.2023 12:14:50 UTC) |
| user_prjsendercats | -1 |
| user_lastmsg | 7 |
| user_pro | 0 |
| user_rcomm_pm_notify | 1 (уведомления включены) |
| user_rcomm_mail_notify | 1 (уведомления включены) |
| user_pmnotify | 1 (уведомления включены) |
| user_newpm | 1 (есть новые личные сообщения) |
| user_verification_status | 0 |
и представьте, что все эти поля идут по горизонтали, например при просмотре через PHPMyAdmin, Adminer, DBeaver и т.д. - простынь получается такой, что раз 5-ть не вмещается в экран.
Теперь о производительности, - заполнил пользователь поля или нет - они всё равно грузятся клиенту.
Если всего 10-30 пользователей на сайте - конечно ничего, а если 3-10 тысяч, то уже и чего - ресурсы сервера не безграничны.
А вот с плагином “Userfields” - мы загружаем только те поля, которые пользователь заполнил в профиле
и безусловно, большим преимуществом будет универсальный способ вывода во всех шаблонах без подстановки префиксов и плюс полная кастомизация полей в шаблонах
Теперь, по индивидуальной кастомизации, вот пример полей в шаблоне users.details.tpl
<!-- IF {PHP|cot_plugin_active('userfields')} -->
<div class="row mb-3">
<div class="list-group list-group-striped list-group-flush mb-4">
<!-- IF {USERFIELDS_COMPANY_NAME} -->
<li class="list-group-item list-group-item-action ">
<div class="row g-3">
<div class="col-12 col-lg-4">
<h5 class="mb-0 fs-6 text-secondary fw-semibold">
{USERFIELDS_COMPANY_NAME_TITLE}
</h5>
</div>
<div class="col-12 col-lg-8">
<div>
<p><i class="fa-solid fa-building me-2"></i>{USERFIELDS_COMPANY_NAME}</p>
</div>
</div>
</div>
</li>
<!-- ENDIF -->
<!-- IF {USERFIELDS_PROMO_TEXT} -->
<li class="list-group-item list-group-item-action ">
<div class="row g-3">
<div class="col-12 col-lg-4">
<h5 class="mb-0 fs-6 text-secondary fw-semibold">
{USERFIELDS_PROMO_TEXT_TITLE}
</h5>
</div>
<div class="col-12 col-lg-8">
<div>
<p><i class="fa-solid fa-list-check fa-lg me-2"></i>{USERFIELDS_PROMO_TEXT}</p>
</div>
</div>
</div>
</li>
<!-- ENDIF -->
<!-- IF {USERFIELDS_GITHUB} -->
<li class="list-group-item list-group-item-action ">
<div class="row g-3">
<div class="col-12 col-lg-4">
<h5 class="mb-0 fs-6 text-secondary fw-semibold">
{USERFIELDS_GITHUB_TITLE}
</h5>
</div>
<div class="col-12 col-lg-8">
<div>
<a rel="noopener noreferrer" href="https://github.com/{USERFIELDS_GITHUB}" target="_blank" class="fw-semibold">
<i class="fa-brands fa-square-github fa-xl me-2"></i>{PHP.L.userfields_github_details}
</a>
</div>
</div>
</div>
</li>
<!-- ENDIF -->
<!-- IF {USERFIELDS_TELEGRAM} -->
<li class="list-group-item list-group-item-action ">
<div class="row g-3">
<div class="col-12 col-lg-4">
<h5 class="mb-0 fs-6 text-secondary fw-semibold">
{USERFIELDS_TELEGRAM_TITLE}
</h5>
</div>
<div class="col-12 col-lg-8">
<div>
<a rel="noopener noreferrer" href="https://t.me/{USERFIELDS_TELEGRAM}" target="_blank" class="fw-semibold">
<i class="fa-brands fa-telegram fa-xl me-2"></i>{PHP.L.userfields_telegram_details}
</a>
</div>
</div>
</div>
</li>
<!-- ENDIF -->
<!-- IF {USERFIELDS_CELL_NUMBER} -->
<li class="list-group-item list-group-item-action ">
<div class="row g-3">
<div class="col-12 col-lg-4">
<h5 class="mb-0 fs-6 text-secondary fw-semibold">
{USERFIELDS_CELL_NUMBER_TITLE}
</h5>
</div>
<div class="col-12 col-lg-8">
<div>
<a rel="noopener noreferrer" href="tel:{USERFIELDS_CELL_NUMBER}" class="fw-semibold">
<i class="fa-solid fa-phone-volume fa-xl me-2"></i>{USERFIELDS_CELL_NUMBER}
</a>
</div>
</div>
</div>
</li>
<!-- ENDIF -->
</div>
</div>
<!-- ENDIF -->
как видите, каждое поле вы контролируете и по оформлению и по значениям, которые отображаются. наглядно можно увидеть в моем профиле.
#362 webitproff:
Теперь о производительности, - заполнил пользователь поля или нет - они всё равно грузятся клиенту.
Если всего 10-30 пользователей на сайте - конечно ничего, а если 3-10 тысяч, то уже и чего - ресурсы сервера не безграничны.
А вот с плагином “Userfields” - мы загружаем только те поля, которые пользователь заполнил в профиле
и безусловно, большим преимуществом будет универсальный способ вывода во всех шаблонах без подстановки префиксов и плюс полная кастомизация полей в шаблонах
Если в таком контексте рассматривать новый плагин, - то согласен, преимущество на лицо и очевидны. Спасибо!
Вышла новая версия плагина version 2.0.1 from Jan 15Th, 2026, подробнее на странице