Страницы, статьи и новости
Инструменты и плагины
Заготовка заголовок


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

Редактировать шаблон вы можете на свое усмотрение и как вам угодно. Если у вас на это нет времени или недостаточно знаний - вы всегда можете заказать адаптацию шаблона сайта написав мне по контактам на GitHub или в личные сообщения на публичной странице сайта маркетплейса цифровых товаров

26.08.2025 01:22

Плагин Userfields для Cotonti 0.9.26 

 

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

 

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

 

att_671.webp

Основные возможности

  • Создание, редактирование и удаление типов полей с уникальными кодами, названиями и порядком сортировки через админ-панель.
  • Хранение значений в отдельной таблице, привязанной к 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 (для внешних ключей).

 

Установка

 

  1. Подготовка файлов:
    • Скачайте исходный код с репозитория на GitHub.
    • Распакуйте cot-userfields-main.zip и загрузите папку userfields в директорию plugins в корне Cotonti.
  2. Установка через админ-панель:
    • Войдите в админ-панель (/admin.php).
    • Перейдите в Администрирование > Расширения > User Fields.
    • Найдите плагин Userfields и нажмите Установить.
    • Плагин создаёт таблицы cot_userfield_types и cot_userfield_values, добавляя тестовые поля: cell_number (Номер мобильного телефона, порядок 1) и company_name (Название компании, порядок 2).
    • Эти поля — примеры; их можно удалить, отредактировать или создать новые.
  3. Список файлов плагина:
    • 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                  # Теги для интеграции в другие модули и плагины на своих условиях без специальных преффиксов

 
  1. Деинсталляция:
    • В админ-панели: Администрирование > Расширения > Userfields > Деинсталлировать.
    • Выполняется userfields.uninstall.sql, удаляющий таблицы.
    • Удалите папку plugins/userfields вручную.
  2. Устранение неполадок:

Управление полями в админ-панели

Админ-панель: Администрирование > Другие > Userfields .

Интерфейс

  • Заголовок: "Управление дополнительными полями пользователей".
  • Список типов полей: Таблица с колонками: Код, Название, Порядок сортировки, Редактировать, Удалить.
  • Формы: Для добавления/редактирования типов полей.

Добавление типа поля

  • Нажмите Добавить тип поля.
  • Форма:
    • Код (code): Уникальный идентификатор (латинские буквы, цифры, нижнее подчеркивание; макс. 50 символов). Используется в тегах (например, cell_numberUSERFIELDS_CELL_NUMBER). Обязательное, уникальное.
    • Название (title): Отображаемое имя (например, "Контактный телефон"; макс. 100 символов). Обязательное.
    • Порядок сортировки (order_num): Целое число (1 — первый, 2 — второй). Определяет порядок вывода (меньше — выше). Обязательное, по умолчанию 0.
  • Нажмите Сохранить. Ошибки (дубликат кода, пустые поля) будут отображены.

Редактирование типа поля

  • Нажмите Редактировать рядом с полем.
  • Измените код, название или порядок (код должен быть уникальным).
  • Нажмите Сохранить. Обновите теги в шаблонах, если код изменился.

Удаление типа поля

  • Нажмите Удалить и подтвердите.
  • Удаляет тип поля и связанные значения в 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.

Отредактировано: webitproff (23.01.2026 19:35, 4 месяца назад)
10.09.2025 04:40

доброго времени суток, а в чем смысл или преимущества плагина, если есть в движке экстраполя и их тоже можно добавлять сколько угодно?

10.09.2025 05:31

#361 Quentin: 
 

доброго времени суток, а в чем смысл или преимущества плагина, если есть в движке экстраполя и их тоже можно добавлять сколько угодно?

 

попробую ответить наглядно, вот пример только по одному пользователю:

ПолеЗначение
user_id12
user_banexpire0
user_nameWebsite_Builder
user_password886b3a83469a3c2bcad463acbe6504c2d******95085b532542d77b4e62e39e8
user_passfuncsha256
user_passsalt23119401******c2
user_maingrp4
user_countryru
user_timezoneEurope/Helsinki
user_textСтрасть. Преданность. Сообщество. Мы - демонстрационная команда Avada Мы - творческая и преданная своему делу демонстрационная группа людей, которые любят WordPress, наших клиентов и онлайн-сообщество. В 2012 году мы задались целью создать идеальный конструктор веб-сайтов; так родилась компания Avada. Строим свое будущее Avada стала темой продаж № 1 на Themeforest с момента своего запуска в 2012 году, с постоянно растущей клиентской базой, насчитывающей 911 746 новичков, маркетологов и профессионалов. Наше основное внимание всегда было сосредоточено на том, чтобы Avada сделала ваш рабочий процесс веб-дизайна более доступным и приятным.
user_birthdate2013-04-01
user_genderU (не указан)
user_emailwebsite_builder@*****.com
user_hideemail1 (скрыт)
user_thememarketplace
user_schemedefault
user_langru
user_regdate1693563290 (01.09.2023 12:14:50 UTC)
user_lastlog1695686256 (26.09.2023 00:37:36 UTC)
user_lastvisit1700648964 (22.11.2024 08:29:24 UTC)
user_lastip141.101.96.77
user_logcount12
user_sid70****368270a9247dac05ef7****f5afca3167077280dffe5****e8cbddb2dc
user_sidtime1693563439 (01.09.2023 12:17:19 UTC)
user_lostpassfe9c10b04480******60ed5aef7******
user_auth(пусто)
user_tokence0cb4c217874411
user_catsdizayn,razrabotka-po
user_usergroup4
user_avatardatas/avatars/12-member-luke-400x300-1.jpg
user_photo(пусто)
user_adress_local(пусто)
user_facebookhttps://www.facebook.com/groups/********02687184
user_first_second_nameАвадар Лукович
user_instagramhttps://www.instagram.com/the****n/
user_name_companyWebsite_Builder
user_phone_contact+*******-55-55
user_telegram(пусто)
user_time_working10:00 - 21:00
user_whats_app+******55555
user_www_sitehttps://a*****.com/
user_youtube_linkhttps://www.youtube.com/c/****os
user_region4925
user_city1924532
user_postcount0
user_prjsenderdate1693563290 (01.09.2023 12:14:50 UTC)
user_prjsendercats-1
user_lastmsg7
user_pro0
user_rcomm_pm_notify1 (уведомления включены)
user_rcomm_mail_notify1 (уведомления включены)
user_pmnotify1 (уведомления включены)
user_newpm1 (есть новые личные сообщения)
user_verification_status0

и представьте, что все эти поля идут по горизонтали, например при просмотре через PHPMyAdmin, Adminer, DBeaver и т.д. - простынь получается такой, что раз 5-ть не вмещается в экран.

Теперь о производительности, - заполнил пользователь поля или нет - они всё равно грузятся клиенту. 

Если всего 10-30 пользователей на сайте - конечно ничего, а если 3-10 тысяч, то уже и чего - ресурсы сервера не безграничны.

А вот с плагином “Userfields” - мы загружаем только те поля, которые пользователь заполнил в профиле

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

Отредактировано: webitproff (10.09.2025 05:46, 9 месяцев назад)
10.09.2025 06:03

Теперь, по индивидуальной кастомизации, вот пример полей в шаблоне 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 -->

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

 

 

 

11.09.2025 01:43

#362 webitproff: 
 

Теперь о производительности, - заполнил пользователь поля или нет - они всё равно грузятся клиенту. 

Если всего 10-30 пользователей на сайте - конечно ничего, а если 3-10 тысяч, то уже и чего - ресурсы сервера не безграничны.

А вот с плагином “Userfields” - мы загружаем только те поля, которые пользователь заполнил в профиле

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

Если в таком контексте рассматривать новый плагин, - то согласен, преимущество на лицо и очевидны. Спасибо!

15.01.2026 12:00

Вышла новая версия плагина version 2.0.1 from Jan 15Th, 2026, подробнее на странице

Исходный код на github

Аккаунт