Skip to content

Releases: webitproff/xtradbrowusers-cotonti

The final version without internationalization of text input fields.

Choose a tag to compare

@webitproff webitproff released this 17 Jul 23:50
251985f

The final version without internationalization of text input fields.

v.1.0.1 Extrafields Users Custom

Choose a tag to compare

@webitproff webitproff released this 16 Jul 20:14
5c1d9c7

Extrafields Users Custom — плагин дополнительных полей для модуля Users

Version
Cotonti
PHP
MySQL
Bootstrap
License

xtradbrowusers-cotonti-webitproff

Общая информация о плагине

  • Код: xtradbrowusers
  • Назначение: добавляет дополнительные поля для модуля Users версии 1.4.14+ в собственную таблицу базы данных
  • Версия: 1.0.0
  • Дата: 16 июля 2026
  • Автор: webitproff
  • Копирайт: © 2026 webitproff
  • Зависимости: Модуль Users (входит в состав Cotonti CMF)
  • Совместимость: Cotonti v1.0+, PHP 8.4+, MySQL 8.4+, Bootstrap 5.3+

Что это за плагин и зачем он нужен?

Extrafields Users Custom — это специализированное расширение для Cotonti CMF, которое позволяет добавлять неограниченное количество произвольных полей (extrafields) к профилям пользователей, не изменяя при этом структуру стандартной таблицы cot_users. Все дополнительные данные сохраняются в отдельной, изолированной таблице cot_xtradbrowusers, связанной с основной записью пользователя через внешний ключ с каскадным удалением (ON DELETE CASCADE).

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

Ключевые преимущества изолированного хранения:

  • Чистота ядра системы: стандартная таблица пользователей остаётся нетронутой, что исключает конфликты при обновлениях Cotonti и упрощает обслуживание.
  • Полная изоляция данных: любые изменения структуры дополнительных полей не затрагивают основные данные пользователя.
  • Автоматическая целостность: при удалении пользователя все связанные дополнительные данные удаляются автоматически (благодаря внешнему ключу), а также очищаются загруженные файлы.
  • Простота отката: при деинсталляции плагина все его данные полностью удаляются одним SQL‑запросом и очисткой папок.

Что идёт «из коробки»?

Сразу после установки плагина администратор получает 15 заранее настроенных демонстрационных полей всех основных типов, поддерживаемых API Extrafields в Cotonti. Среди них:

  • Текстовые поля (input, textarea)
  • Целые числа и числа с плавающей точкой (inputint, double)
  • Выпадающие списки (select)
  • Радиокнопки (radio)
  • Дата и время (datetime)
  • Флаг страны (country)
  • Диапазон чисел (range)
  • Чекбоксы с множественным выбором (checklistbox)
  • Загрузка файлов (file)

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

Кому и почему будет полезен этот плагин?

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

Для сообществ и форумов:

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

Для интернет-магазинов:

  • Хранить дополнительный телефон, предпочтительный способ связи, адрес доставки (если не используется отдельная адресная книга).
  • Вести учёт клиентов по категориям (оптовый/розничный, уровень лояльности).
  • Прикреплять к профилю документы: договоры, реквизиты.

Для фриланс-бирж и площадок услуг:

  • Публиковать портфолио, список навыков, сертификаты.
  • Указывать профессиональный опыт, ставку, график работы.
  • Загружать резюме прямо в профиль.
  • Выводить рейтинг исполнителя, верификацию, уровень квалификации — всё это можно оформить в виде отдельных полей и гибко кастомизировать вывод.

Разработчикам и администраторам плагин даёт полную свободу: все поля управляются через стандартный интерфейс (Администрирование → Расширения → Экстраполя), а их значения автоматически доступны в шаблонах регистрации, редактирования профиля (пользователем и администратором), публичной карточки и общего списка пользователей. Также поддерживается вывод в мета‑теги страницы (header.tpl) через специальный хук, что открывает дополнительные возможности для SEO.

Благодаря полной интеграции с системой тегов Cotonti каждое поле можно выводить как в универсальном цикле, так и индивидуально, с собственной вёрсткой и логикой отображения. Это делает плагин одинаково удобным как для быстрого добавления пары полей, так и для глубокой кастомизации профилей на крупных проектах.

Часть №2 README: описание файлов плагина с группировкой по назначению


Структура и назначение файлов плагина

Плагин Extrafields Users Custom взаимодействует с Cotonti через систему хуков. Каждый файл, предназначенный для выполнения на определённом хуке, содержит обязательный заголовок, который регистрирует его в таблице cot_plugins и определяет, когда именно код должен быть выполнен. Например, файл, подключающийся к хуку admin.extrafields.first, начинается так:

<?php
/* ====================
  [BEGIN_COT_EXT]
  Hooks=admin.extrafields.first
  [END_COT_EXT]
==================== */

После установки плагина эта запись попадает в таблицу cot_plugins, и при каждом вызове cot_getextplugins('admin.extrafields.first') Cotonti автоматически подключает и выполняет наш файл.

Группировка файлов

Основные файлы плагина

1. Файлы регистрации и инициализации плагина

Файл xtradbrowusers.setup.php

Это файл метаданных плагина, который не является обработчиком какого‑либо хука. Он содержит единственный блок [BEGIN_COT_EXT]...[END_COT_EXT], в котором через пары Ключ=Значение объявлены основные сведения о расширении:

  • Code – уникальный идентификатор плагина (xtradbrowusers);
  • Name – человекочитаемое название (Custom Extrafields Users);
  • Description, Version, Date, Author, Copyright, Notes – справочная информация;
  • Requires_modules – список обязательных модулей (в нашем случае users);
  • Auth_guests, Lock_guests, Auth_members, Lock_members – права доступа для гостей и участников, которые будут записаны в таблицу cot_auth при установке.

Этот файл не содержит PHP‑кода, исполняемого при каждом запросе. Он обрабатывается единожды функцией cot_extension_install() во время установки плагина. При этом система Cotonti автоматически:

  • создаёт запись в таблице cot_core с ct_code='xtradbrowusers', ct_plug=1 (признак плагина), текущей версией;
  • на основе значений Auth_guests, Lock_guests, Auth_members, Lock_members формирует строки в таблице cot_auth для каждой группы пользователей (гости, неактивные, участники, суперадминистраторы и т.д.);
  • сканирует все файлы плагина, находит в них заголовки вида Hooks=..., и для каждого создаёт отдельную запись в таблице cot_plugins с указанием хука, части, порядка выполнения и пути к файлу.

Сам setup.php не вызывает Cot::$db->registerTable('xtradbrowusers') и не подключает языковые файлы — эта инициализация выполняется позже, в рабочих файлах плагина.

Файл не добавляет записей в cot_config, так как плагин пока не имеет собственных настроек, однако при необходимости разработчик может расширить setup.php блоком COT_EXT_CONFIG, и система автоматически создаст нужные опции в таблице cot_config (структура cot_config полностью позволяет хранить любые параметры модулей и плагинов).

Файл xtradbrowusers.global.php

Этот файл уже содержит активный хук global. Благодаря записи в cot_plugins он подключается при каждом запросе к сайту (до формирования основного вывода). Его задача — гарантировать, что во всех точках выполнения Cotonti доступны:

  • языковые константы плагина (через cot_langfile('xtradbrowusers', 'plug'));
  • API‑функции плагина, определённые в inc/xtradbrowusers.functions.php.

Именно внутри xtradbrowusers.functions.php (подключаемого отсюда) находится вызов Cot::$db->registerTable('xtradbrowusers'), регистрирующий глобальную переменную $db_xtradbrowusers и делающий доступным обращение Cot::$db->xtradbrowusers во всём коде плагина и за его пределами.

Таким образом, global.php обеспечивает «фоновую» инициализацию, не требующую повторения в каждом хуке, а setup.php выполняет разовую регистрацию плагина в системных таблицах при установке.

2. Файлы установки и удаления (setup/)

  • setup/xtradbrowusers.install.sql
    Создаёт таблицу cot_xtradbrowusers с внешним ключом, каскадно удаляющим данные при удалении пользователя.

  • setup/xtradbrowusers.install.php
    Добавляет 15 демонстрационных полей (всех типов, поддерживаемых Cotonti Extrafields) и создаёт папку для загружаемых файлов.

  • setup/xtradbrowusers.uninstall.sql
    Удаляет таблицу cot_xtradbrowusers при деинсталляции.

  • setup/xtradbrowusers.uninstall.php
    Удаляет все определения экстраполей из cot_extra_fields, удаляет таблицу и папку с за...

Read more