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.

2025-08-26 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.

This post was edited by webitproff (2026-01-23 19:35, 4 months ago)
2025-09-10 04:40

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

2025-09-10 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” - мы загружаем только те поля, которые пользователь заполнил в профиле

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

This post was edited by webitproff (2025-09-10 05:46, 9 months ago)
2025-09-10 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 -->

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

 

 

 

2025-09-11 01:43

#362 webitproff: 
 

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

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

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

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

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

2026-01-15 12:00

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

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

Account