плагин для Cotonti CMF, позволяющий добавлять неограниченное число дополнительных полей к профилям пользователей. Все данные хранятся в отдельной таблице cot_xtradbrowusers, не затрагивая стандартную структуру cot_users.
Extrafields Users Custom (код xtradbrowusers) — плагин для Cotonti CMF, позволяющий добавлять неограниченное число дополнительных полей к профилям пользователей. Все данные хранятся в отдельной таблице cot_xtradbrowusers, не затрагивая стандартную структуру cot_users. Это даёт полную изоляцию, лёгкое обслуживание и автоматическую очистку при удалении пользователя.
Плагин совместим с Cotonti v1.0+, PHP 8.4+, MySQL 8.4+, Bootstrap 5.3+. После установки вы получаете 15 демонстрационных полей всех поддерживаемых типов, готовых к немедленному использованию.
Extrafields Users Custom — специализированное расширение, которое добавляет произвольные поля к профилям пользователей, не изменяя стандартную таблицу cot_users. Все дополнительные данные сохраняются в изолированной таблице cot_xtradbrowusers, связанной с основной записью через внешний ключ с каскадным удалением (ON DELETE CASCADE).
Такой подход критичен для сайтов, где профиль — не просто учётная запись, а витрина специалиста, карточка клиента или лицо в сообществе: форумы, интернет‑магазины, фриланс‑биржи, корпоративные порталы. Вы получаете гибкое расширение без вмешательства в ядро системы.
Ключевые преимущества: чистота ядра, полная изоляция данных, автоматическая целостность при удалении пользователя и быстрый откат при деинсталляции.
2. Что идёт «из коробки»
Сразу после установки администратор получает 15 демонстрационных полей, охватывающих все типы, поддерживаемые API Extrafields: input, textarea, datetime, double, select, inputint, radio, file, country, range, checklistbox. Это позволяет быстро оценить, какой тип подходит для конкретной задачи, и сразу увидеть плагин в действии.
3. Кому и почему будет полезен
Плагин решает задачу расширения профиля там, где стандартного набора полей недостаточно. Для сообществ — статусы, интересы, ссылки на соцсети. Для интернет‑магазинов — дополнительные контакты, категории клиентов, реквизиты. Для фриланс‑бирж — навыки, портфолио, резюме, уровень квалификации. Все поля управляются через стандартный интерфейс «Администрирование → Расширения → Экстраполя», а их значения автоматически доступны в шаблонах регистрации, редактирования профиля, публичной карточки и общего списка пользователей. Также поддерживается вывод в мета‑теги страницы через хук header.tags.
Распакуйте архив и загрузите папку xtradbrowusers в директорию plugins/ вашего сайта. Убедитесь, что файл xtradbrowusers.setup.php доступен по пути /plugins/xtradbrowusers/xtradbrowusers.setup.php.
Войдите в административную панель Cotonti и перейдите в раздел «Расширения» (URL зависит от настроек: /admin/extensions, /ru/admin/extensions или admin.php?m=extensions).
Найдите плагин Custom Extrafields Users (код xtradbrowusers) и нажмите «Установить». Система зарегистрирует плагин в таблицах cot_core, cot_auth и cot_plugins, создаст таблицу cot_xtradbrowusers, добавит 15 демо‑полей и папку для загружаемых файлов.
После установки перейдите в «Администрирование → Расширения → Экстраполя», выберите таблицу cot_xtradbrowusers — вы увидите готовые поля.
5. Демонстрационные поля
При установке создаются следующие поля (все необязательные):
phone_extra (input) — Дополнительный телефон
about_extra (textarea) — О себе
hire_date (datetime) — Дата найма
salary (double) — Зарплата
department (select) — Отдел (Не указан, IT, Маркетинг, Продажи, Поддержка)
experience_years (inputint) — Стаж (лет)
skill_level (select) — Уровень квалификации (Junior, Middle, Senior, Lead)
has_car (radio) — Наличие автомобиля (Yes/No)
last_promotion (datetime) — Дата последнего повышения
resume_file (file) — Резюме (jpg, png, pdf, zip)
residence_country (country) — Страна проживания (по умолчанию Украина)
english_level (range) — Уровень английского (0–100, по умолчанию 50)
interests (checklistbox) — Интересы (Спорт, Музыка, IT, Путешествия)
work_schedule (select) — График работы (Полный день, Сменный, Удалёнка, Гибкий)
emergency_contact (input) — Экстренный контакт
6. Структура и назначение файлов плагина
Плагин состоит из нескольких групп файлов, каждый из которых выполняется в строго определённый момент благодаря системе хуков Cotonti. Все файлы, кроме setup.php, содержат заголовок с указанием хука, регистрируемый в таблице cot_plugins.
Регистрация и инициализация
xtradbrowusers.setup.php — файл метаданных, обрабатывается однократно при установке. Не содержит PHP‑кода для каждого запроса. Объявляет код, название, зависимости, права доступа. Система на его основе создаёт записи в cot_core, cot_auth и сканирует папку плагина для регистрации хуков в cot_plugins.
xtradbrowusers.global.php (хук global) — выполняется при каждом запросе, подключает языковые файлы и API‑функции. Именно здесь через inc/xtradbrowusers.functions.php регистрируется таблица xtradbrowusers.
Установка и удаление
Файлы в папке setup/ отвечают за создание и удаление таблицы, демо‑полей и папки с файлами. uninstall.php полностью очищает реестр экстраполей и файловую систему.
Интеграция с интерфейсом управления экстраполями
xtradbrowusers.extrafields.php (хук admin.extrafields.first) добавляет таблицу cot_xtradbrowusers в белый список админки, позволяя управлять полями через стандартный раздел «Экстраполя».
Редактирование профиля пользователем
xtradbrowusers.users.profile.tags.php (хук users.profile.tags) — назначает теги {USERS_PROFILE_XTRA_…} в шаблоне users.profile.tpl.
xtradbrowusers.users.profile.update.done.php (хук users.profile.update.done) — сохраняет значения из формы в таблицу плагина.
Редактирование администратором
xtradbrowusers.users.edit.tags.php (хук users.edit.tags) — теги для админской формы (users.edit.tpl).
xtradbrowusers.users.edit.update.done.php (хук users.edit.update.done) — сохранение при админ‑редактировании.
Публичный профиль
xtradbrowusers.users.details.tags.php (хук users.details.tags) — теги для публичной страницы (users.details.tpl), включая поддержку названий стран.
Список пользователей
xtradbrowusers.users.loop.php (хук users.loop) — теги {USERS_ROW_XTRA_…} для каждой строки списка.
xtradbrowusers.usertags.php (хук usertags.main) — интегрируется в центральный генератор пользовательских тегов, делая поля доступными в любом контексте (форумы, посты, виджеты).
Регистрация
xtradbrowusers.users.register.tags.php (хук users.register.tags) и …register.add.done.php — теги в форме регистрации и сохранение после успешной регистрации.
Удаление пользователя
xtradbrowusers.users.delete.done.php (хук users.delete.done) — удаляет файлы полей и запись из cot_xtradbrowusers.
Дополнительно
xtradbrowusers.header.tags.php (хук header.tags) — позволяет вывести данные экстраполей в <title> и мета‑тегах.
7. Управление экстраполями в админке
Перейдите в «Администрирование → Расширения → Экстраполя» и выберите таблицу cot_xtradbrowusers. Вы увидите список из 15 полей и форму добавления нового. Каждое поле характеризуется атрибутами: имя, тип, HTML‑шаблон, варианты, параметры, значение по умолчанию, обязательность, парсер и описание.
Доступные типы: input, textarea, select, radio, checkbox, datetime, country, file, checklistbox, range, inputint, currency, double. Для выпадающих списков и радиокнопок варианты указываются через запятую; для диапазона — минимальное и максимальное значение; для даты — диапазон лет и формат. Значение по умолчанию для datetime задаётся в формате UNIX timestamp.
Пример создания поля «Любимый язык программирования»: имя fav_language, тип select, варианты Не указан,JavaScript,Python,PHP,Rust, по умолчанию Не указан. Новое поле сразу появляется в профилях.
Хук users.edit.tags предоставляет теги {USERS_EDIT_XTRA_ИМЯПОЛЯ} и {USERS_EDIT_XTRA_ИМЯПОЛЯ_TITLE}, а также универсальные {USERS_EDIT_XTRA_EXTRAFLD} и _TITLE для цикла.
Чтобы отобразить все поля разом, вставьте в users.edit.tpl блок с проверкой активности плагина и циклом <!-- BEGIN: XTRA_EXTRAFLD -->…<!-- END: XTRA_EXTRAFLD -->. Для индивидуального размещения используйте конкретные теги. После сохранения данные записываются в таблицу плагина и становятся доступны другим шаблонам.
Аналогично админской форме, но с префиксом USERS_PROFILE_XTRA_. Поддерживается как циклический, так и индивидуальный вывод. Рекомендуется всегда оборачивать вывод в проверку активности плагина.
Здесь поля выводятся как готовые значения, а не как элементы ввода. Доступны теги {USERS_DETAILS_XTRA_ИМЯПОЛЯ} (форматированное), _VALUE (сырое), _TITLE. Для полей типа country доступно название страны. Дату удобно форматировать фильтром cot_date. Можно использовать цикл или индивидуальные теги.
11. Вывод полей: список пользователей (users.tpl)
Внутри цикла <!-- BEGIN: USERS_ROW --> доступны теги {USERS_ROW_XTRA_…}. Рекомендуется выводить только ключевые поля, чтобы не перегружать карточки. Плагин не предоставляет группового цикла в этом шаблоне — только индивидуальные теги.
12. Вывод полей: регистрация (users.register.tpl)
Форма регистрации не загружает существующие данные, но сохраняет введённые значения при ошибках валидации. Доступны теги {USERS_REGISTER_XTRA_…}. Можно вывести все поля циклом или выборочно.
13. Групповой (циклический) вывод
Когда полей много, удобно использовать единый блок <!-- BEGIN: XTRA_EXTRAFLD -->. Он работает в шаблонах edit, profile, details, register и list (список пользователей), автоматически подставляя название и элемент поля. Каждый хук назначает универсальные теги XTRA_EXTRAFLD и XTRA_EXTRAFLD_TITLE, а шаблонный цикл проходит по всем полям.
Важно: в формах редактирования (edit, profile, register) нельзя одновременно использовать индивидуальные теги и цикл для одного и того же поля — это приведёт к дублированию name в HTML и потере данных при отправке. Выберите что‑то одно. На публичных страницах дублирование не вызывает ошибок сохранения, но ради чистоты кода его также лучше избегать.
Рекомендация: в формах используйте цикл; в карточках публичного профиля — индивидуальный вывод для кастомизации; в списке пользователей — только индивидуальные теги.
14. Локализация дополнительных полей
Плагин полностью совместим с системой перевода Cotonti. Заголовки полей ищутся по ключам $L['xtra_имяполя_title'] или $L['имяполя_title']. Значения select, radio, checklistbox переводятся через $L['имяполя_значение'] (без префикса). Если перевод не найден, используется исходное значение или описание из админки.
Языковые файлы плагина расположены в plugins/xtradbrowusers/lang/. Вы можете редактировать их или переопределять переводы в языковом файле темы. После изменения необходимо сбросить кеш. Локализация работает автоматически — дополнительные действия в шаблонах не требуются.
15. Поддержка и обратная связь
Плагин распространяется бесплатно под лицензией BSD. Вы можете свободно использовать, дорабатывать и распространять его.
Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.
CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.