"Xtra db row market" v.4.0.0: админ-панель и интеграция с Market Mass Edit
Масштабное обновление плагина "магических" дополнительных полей с различными типами данных модуля товаров, интеграция с плагином массового редактирования, и собственная админка
Плагин xtradbrowmarket 4.0.0: собственная панель управления и полная интеграция с Market Mass Edit
Дата: 11 августа 2026
Автор: webitproff
Проект: xtradbrowmarket — Extrafields Market Custom i18n для Cotonti
Оглавление
- Введение
- Раздел 1. Новая административная панель xtradbrowmarket
- Раздел 2. Глубокая интеграция с плагином Market Mass Edit
- Заключение
Введение
Плагин xtradbrowmarket (Extrafields Market Custom i18n) изначально создавался для удобного расширения карточки товара в модуле Market PRO v.5 собственными наборами полей в отдельной таблице БД, с поддержкой мультиязычности. Однако до версии 4.0.0 он не имел выделенного административного интерфейса, а его данные оставались недоступными для массового редактирования.
Масштабное обновление, которому посвящена эта статья, решает обе эти задачи: плагин получает полноценную админ-панель с поиском, фильтрацией и управлением переводами, а также глубокую интеграцию с плагином Market Mass Edit, который позволяет редактировать товары десятками в одной форме, где колонки разбиты на группы:
- данные в штатных полях таблицы самого модуля Market
- данные экстраполей (магические дополнительные поля с различными типами данных), которые лежат в таблице модуля Market
- данные экстраполей модуля Market, которые лежат в таблицах плагина xtradbrowmarket
В этой статье мы детально разберём новую административную часть xtradbrowmarket, её интерфейс и функциональные возможности, а затем расскажем о том, как была реализована интеграция с marketmassedit и какие преимущества она даёт владельцам интернет-магазинов на Cotonti.
Раздел 1. Новая административная панель xtradbrowmarket
Начиная с версии 4.0.0, плагин добавляет собственный раздел в административные инструменты Cotonti (Расширения → Extrafields Market Custom i18n → Администрирование). Интерфейс построен по трёхвкладочной схеме с использованием Bootstrap 5 и XTemplate, что обеспечивает современный внешний вид и высокую скорость работы.
1.1. Доступ и навигация
Админка доступна по адресу:
/admin?m=other&p=xtradbrowmarketТри вкладки переключаются через параметр tab:
- Statistics (
tab=stats) — сводная информация и таблица всех зарегистрированных экстраполей. - Edit (
tab=edit) — форма массового редактирования основных значений экстраполей. - Edit + Translations (
tab=i18n) — расширенная форма, включающая переводы на дополнительные языки.
Все вкладки поддерживают прямые URL, поэтому их можно добавлять в закладки браузера.
1.2. Вкладка «Статистика» — полная картина использования
Первая вкладка даёт администратору быстрый обзор состояния плагина и его интеграции с товарами.
1.2.1. Карточки с ключевыми показателями
В верхней части расположены три контрастных информационных блока:
- Всего товаров — общее количество товаров в модуле Market (с непустым заголовком). Эта цифра показывает потенциальный охват.
- Записей в xtradbrowmarket — сколько строк существует в собственной таблице плагина (
cot_xtradbrowmarket). Поскольку запись создаётся только при сохранении хотя бы одного поля, этот счётчик отражает, для скольких товаров уже были заполнены данные. - Заполненных записей — количество строк, в которых хотя бы одно поле экстраполя не является пустым. Это позволяет оценить, насколько активно используются добавленные поля.
Эти три числа мгновенно дают понять, насколько глубоко внедрены пользовательские поля в каталог.
1.2.2. Таблица параметров экстраполей
Ниже карточек выводится полноценная таблица со всеми полями, зарегистрированными для таблицы cot_xtradbrowmarket. Для каждого поля отображаются:
- Имя поля (
field_name) — техническое имя, используемое, в шаблонах и коде. - Тип (
field_type) — input, textarea, select, checkbox, datetime и т.д. - Описание (
field_description) — человекочитаемое пояснение, заданное при создании поля. - Варианты (
field_variants) — для select, radio, checklistbox — список возможных значений. - Параметры (
field_params) — дополнительные настройки (например, диапазон для range или формат даты). - Значение по умолчанию (
field_default). - Обязательное (
field_required) — да/нет. - Включено (
field_enabled) — да/нет.
Таким образом, администратор может в одном месте оценить конфигурацию всех дополнительных полей, не заходя в общий раздел «Экстраполя» Cotonti. Это особенно удобно, когда полей много и нужно быстро проверить их типы или варианты, а главное мы имеем картину именно своих "магических полей"
1.3. Вкладка «Редактировать» — эффективное управление данными
Вторая вкладка предназначена для непосредственного изменения значений экстраполей своей таблицы cot_xtradbrowmarket. Она спроектирована так, чтобы свести к минимуму время на поиск нужных товаров и обеспечить быструю корректировку.
1.3.1. Панель фильтрации
Перед таблицей редактирования расположена расширенная поисковая панель, позволяющая отфильтровать товары по нескольким критериям:
- Поисковая строка — поиск по названию товара (
`fieldmrkt_title`из таблицы`cot_market`) или по полному тексту (название + описаниеfieldmrkt_text), или по коду (артикулу) товара (fieldmrkt_pcod). Переключение между областями поиска осуществляется радиокнопками. - ID товара — точный фильтр по числовому идентификатору.
- Категория — выпадающий список с поддержкой Select2 для удобного выбора категории Market. При выборе родительской категории автоматически включаются все её подкатегории.
- Статус товара — фильтр по состоянию: все, на модерации (Pending), опубликованные (Published), черновики (Draft).
Фильтры комбинируются, а результаты мгновенно обновляются. После применения отображается информационное сообщение о количестве найденных записей, например: «Найдено 12 записей по запросу "notebooks"».
1.3.2. Таблица (форма) массового редактирования
Основную часть вкладки занимает форма в виде таблицы, строки которой соответствуют записям из cot_xtradbrowmarket, объединённым с товарами (cot_market) через LEFT JOIN.
Колонки таблицы:
- ID — идентификатор товара, является ссылкой на страницу товара на сайте (открывается в новом окне). Это позволяет быстро перейти к просмотру товара.
- Название товара — читаемое название из
cot_market, помогает ориентироваться. - Динамические колонки — по одной колонке на каждое зарегистрированное "магическое поле". Заголовки колонок берутся из локализованных названий полей (через функцию
cot_extrafield_titleиз API Extrafields Cotonti).
В каждой ячейке динамической колонки выводится форма ввода, соответствующая типу поля:
- Для
input,textarea— текстовое поле/область. - Для
select— выпадающий список с вариантами. - Для
checkbox— флажок. - Для
datetime— набор полей для выбора даты и времени. - Для
country— селект с автодополнением стран. - И так далее — все типы, поддерживаемые API Extrafields.
Благодаря использованию функции cot_build_extrafields, каждое поле генерируется точно так же, как в стандартной форме редактирования товара. Это гарантирует корректную обработку значений на стороне сервера.
1.3.3. Сохранение и интеллектуальное обновление
Под таблицей находится кнопка «Сохранить» (Update). При нажатии отправляется POST-запрос со всеми изменёнными данными.
Логика сохранения построена на сравнении новых значений со старыми (предварительно загружается текущая запись через функцию xtradbrowmarket_load). Изменения применяются только к тем полям, которые действительно отличаются. После сохранения плагин подсчитывает количество реально обновлённых товаров и выводит точное сообщение, например: «Обновлено записей: 2». Это исключает ложное ощущение изменений, когда администратор просто нажал кнопку, не меняя данных.
Важной особенностью является сохранение состояния фильтров после отправки формы. Через скрытые поля передаются все текущие параметры поиска и пагинации, поэтому редирект возвращает пользователя на ту же страницу с теми же фильтрами, а не на базовый URL. Это исключает необходимость заново настраивать фильтры после каждого сохранения.
1.3.4. Пагинация
Таблица поддерживает разбивку на страницы. Количество элементов на странице задаётся в настройках плагина (по умолчанию 20). Навигация (pagenav) отображается как над, так и под таблицей, и корректно сохраняет все активные фильтры в URL.
1.4. Вкладка «Редактировать + Переводы» — мультиязычное управление
Третья вкладка расширяет функциональность предыдущей, добавляя поддержку переводов для текстовых полей. Она становится доступной, когда в настройках плагина активирована мультиязычность (xtradbrowmarket_i18n_use = 1).
1.4.1. Индикация состояния i18n
Перед формой редактирования выводится предупреждение: зелёное информационное сообщение, если мультиязычность включена, или жёлтое предупреждение, если отключена. Это позволяет сразу понять, будут ли отображаться поля переводов.
1.4.2. Структура таблицы с переводами
Таблица аналогична вкладке «Редактировать», но для каждого экстраполя, тип которого input или textarea, под основным полем выводится одно или несколько дополнительных полей — по одному на каждый активный дополнительный язык.
Например, если настроены английский (en) и украинский (ua) как дополнительные языки, то под полем page_h1 (основной язык — русский) появятся два дополнительных текстовых поля с метками EN и UA. Заголовки колонок при этом становятся двухстрочными: сверху название поля, снизу — код языка.
1.4.3. Сохранение переводов
Механизм сохранения разделён:
- Основное значение (для языка по умолчанию) сохраняется в таблицу
`cot_xtradbrowmarket`. - Переводы сохраняются в таблицу
`cot_xtradbrowmarket_i18n`вызовом функцииxtradbrowmarket_i18n_save.
Система учитывает изменения как в основном поле, так и в любом из переводов. Если были изменены только переводы, а основное поле осталось прежним, счётчик обновлённых записей всё равно увеличится. Таким образом, администратор получает точную обратную связь.
Фильтры и пагинация работают идентично вкладке «Редактировать», обеспечивая единый пользовательский опыт.
1.5. Технические детали реализации админки
Новая панель управления построена по тем же принципам, что и админки плагинов marketmassedit, aliasmarketpro, aliaspagepro и многие другие. Это гарантирует совместимость и привычный интерфейс для администраторов, уже знакомых с этими инструментами. Все эти расширения всегда доступны бесплатно либо в репозиториях разработчика либо в маркетплейсе расширений для Cotonti
- Безопасность: Для предотвращения SQL-ошибок из-за отсутствующих колонок используется проверка реальной структуры таблицы (
SHOW COLUMNS FROM) с фильтрацией только «своих» полей. Поля, добавляемые через JOIN из других таблиц, не фильтруются. - Динамическое построение форм: Все элементы форм создаются стандартными функциями Cotonti (
cot_build_extrafields,cot_inputbox,cot_selectboxи т.д.), что гарантирует корректную обработку данных и соответствие ожидаемому HTML. - Защита от дублирования: Повторяющиеся имена колонок удаляются через
array_unique, а объединение массивов после фильтрации гарантирует, что поля изxtradbrowmarketне будут потеряны. - Интеграция с мультиязычностью: Логика определения активных дополнительных языков полностью повторяет настройки плагина и используется как в интерфейсе, так и при сохранении.
Благодаря продуманной архитектуре, администратор получает мощный инструмент для управления "магическими" полями товаров, который органично вписывается в экосистему Cotonti. Плагин Extrafields Market Custom i18n - это пока первое и единственное расширение в конструкторе веб-приложений Cotonti, которое имеет собственную админку и интерфейс для управления данными экстраполей сразу в одном месте. Мы видим слева списком названия товаров со ссылками и то, что уже лежит в дополнительных полях каждой карточки товара. Все это можем редактировать в одном интерфейсе, с хорошей формой поиска. Это всё экономит кучу времени, потому что раньше для решения этих задач приходилось открывать каждый товар отдельно и отдельно его редактировать, что бы внести правки или заполнить нужные нам поля.
Раздел 2. Глубокая интеграция с плагином Market Mass Edit
Одним из главных нововведений версии 4.0.0 стала возможность массового редактирования полей xtradbrowmarket прямо в интерфейсе плагина Market Mass Edit. Это стало возможным благодаря системе хуков, которая позволяет расширять функциональность без изменения исходного кода.
2.1. Что такое Market Mass Edit
Market Mass Edit — это административный плагин, предоставляющий удобный интерфейс для быстрого просмотра и массового редактирования товаров модуля Market. Он добавляет в раздел «Инструменты» (Расширения → Market Mass Edit → Администрирование) вкладки:
- Список товаров — поиск, фильтрация по категории, статусу, коду товара.
- Массовое редактирование — таблица, в которой можно одновременно изменять заголовки, алиасы, мета-теги, категории, цены, статусы и другие стандартные поля.
Однако до интеграции с xtradbrowmarket его возможности ограничивались только полями, хранящимися непосредственно в таблице cot_market. Пользовательские экстраполя из cot_xtradbrowmarket оставались невидимыми, и для их изменения приходилось открывать каждую страницу товара отдельно.
2.2. Архитектура интеграции: хуки как ключевой механизм
Cotonti позволяет расширять функциональность через хуки — точки в коде, в которые система включает зарегистрированные обработчики. Разработчики marketmassedit предусмотрели несколько хуков, следуя примеру pagemassedit (плагина для страниц). Именно эти хуки использованы для интеграции.
Плагин xtradbrowmarket регистрирует пять обработчиков в своей папке plugins/xtradbrowmarket/:
marketmassedit.massedit.sql.fields— добавляет колонки в SQL-запрос и сигнализирует о необходимости LEFT JOIN.marketmassedit.massedit.flags— устанавливает флаг видимостиSHOW_XTRAдля шаблона.marketmassedit.massedit.headers— выводит заголовки дополнительных колонок.marketmassedit.massedit.loop— для каждой строки таблицы генерирует поля ввода с актуальными значениями.marketmassedit.massedit.save— сохраняет изменённые данные после отправки формы.
Все обработчики автоматически подключаются, если плагин xtradbrowmarket активен, и никак не влияют на работу marketmassedit при отключении.
2.3. Файлы-обработчики: детальный разбор
2.3.1. xtradbrowmarket.marketmassedit.massedit.sql.fields.php
$selectFields[] = Cot::$db->xtradbrowmarket . '.*';
$needXtraJoin = Cot::$db->xtradbrowmarket;
Этот простой код добавляет все колонки таблицы cot_xtradbrowmarket в список выбираемых полей и сообщает marketmassedit, что требуется выполнить LEFT JOIN с этой таблицей по ключу itempagid = fieldmrkt_id.
2.3.2. xtradbrowmarket.marketmassedit.massedit.flags.php
$t->assign('SHOW_XTRA', 1);
Устанавливает флаг, который шаблон marketmassedit использует для отображения дополнительных колонок.
2.3.3. xtradbrowmarket.marketmassedit.massedit.headers.php
$extrafields = xtradbrowmarket_getExtrafields();
if (!empty($extrafields)) {
foreach ($extrafields as $exfld) {
$t->assign('XTRA_HEADER_TITLE', htmlspecialchars(cot_extrafield_title($exfld, 'xtra_')));
$t->parse('MAIN.XTRA_HEADER');
}
}
Для каждого зарегистрированного экстраполя генерируется заголовок колонки. Название берётся из локализации (массив $L), что позволяет выводить человекочитаемые заголовки на любом языке. Если его нет в ваших строках локализации, - вставляется значение из записи в field_description
2.3.4. xtradbrowmarket.marketmassedit.massedit.loop.php
$extrafields = xtradbrowmarket_getExtrafields();
if (!empty($extrafields)) {
foreach ($extrafields as $exfld) {
$fname = $exfld['field_name'];
$value = $row[$fname] ?? null;
$inputName = 'rxtra_' . $fname . '[' . $id . ']';
$fieldHtml = cot_build_extrafields($inputName, $exfld, $value);
$t->assign('XTRA_COLUMN_HTML', $fieldHtml);
$t->parse('MAIN.MANAGE_ROW.XTRA_COLUMN');
}
}
Здесь $row — текущая строка из объединённого SQL-запроса, содержащая все колонки cot_xtradbrowmarket. Для каждого поля формируется элемент формы с правильным именем (массив rxtra_<имя_поля>[$id]). Функция cot_build_extrafields генерирует HTML в зависимости от типа поля — текстовое поле, textarea, select, checkbox и т.д.
2.3.5. xtradbrowmarket.marketmassedit.massedit.save.php
Сохранение — наиболее ответственная часть. Обработчик получает массив $ids (идентификаторы товаров, отмеченных в форме), затем для каждого ID:
- Загружает текущие данные из
xtradbrowmarket_load. - Сравнивает новые значения из
$_POSTсо старыми. - Для чекбоксов отдельно проверяет наличие ключа в
$_POST(если ключ отсутствует — значит флажок снят, значение 0). - Для
checklistboxкорректно обрабатывает массив, удаляя служебный элементnullval. - Для
datetimeсобирает timestamp из массива день/месяц/год/час/минута. - Вызывает
xtradbrowmarket_saveтолько при наличии реальных изменений. - В конце вызывает
cot_extrafield_movefilesдля обработки загруженных файлов (если такие поля есть).
Такой подход гарантирует, что даже сложные типы полей обрабатываются правильно, а база данных не нагружается холостыми UPDATE-запросами.
2.4. Как это выглядит в интерфейсе Market Mass Edit
При активном плагине xtradbrowmarket во вкладке Массовое редактирование плагина marketmassedit происходят следующие изменения:
- Заголовки таблицы пополняются колонками, соответствующими каждому экстраполю. Они визуально выделяются цветом (жёлтый фон), чтобы отличаться от стандартных полей.
- В каждой строке товара появляются ячейки с элементами ввода для кастомных полей. Администратор может одновременно изменить, например, «Кастомный заголовок» и «Ссылку на поставщика» для десятков товаров.
- При сохранении данные из этих колонок обрабатываются хуком
saveи записываются вcot_xtradbrowmarket. Стандартный механизмmarketmasseditпри этом также сохраняет все остальные поля, обеспечивая атомарность операции. - Подсветка изменений:
marketmasseditсамостоятельно отслеживает, какие товары были реально обновлены, и выводит сообщение вида «Обновлено товаров: 5». Плагинxtradbrowmarketне вмешивается в эту логику, он только предоставляет данные для сохранения.
2.5. Преимущества интеграции
- Экономия времени. Больше не нужно открывать каждый товар по отдельности, чтобы заполнить или скорректировать кастомные поля. Все изменения делаются в одном представлении для десятков и сотен товаров одновременно.
- Согласованность данных. Использование стандартного механизма экстраполей Cotonti гарантирует, что все значения проходят ту же валидацию и форматирование, что и при обычном редактировании.
- Гибкость. Интеграция построена на хуках, поэтому другие разработчики могут аналогичным образом подключать свои плагины к
marketmassedit. - Обратная совместимость. Если
xtradbrowmarketотключён,marketmasseditпродолжает работать как обычно, без каких-либо ошибок или лишних колонок.
2.6. Технические замечания для разработчиков
При реализации интеграции были учтены все трудности, с которыми столкнулись при аналогичной интеграции pagemassedit и xtradbrowpage:
- Защита от отсутствующих колонок.
marketmasseditдинамически проверяет существование колонок вcot_market, но пропускает поля, пришедшие через хук (с точкой в имени), чтобы не потерятьxtradbrowmarket.*. - Корректная обработка checkbox. Как и в случае с
pagemassedit, для чекбоксов предусмотрена специальная проверка, т.к. браузер не отправляет снятые флажки. - Поддержка сложных типов.
datetime,checklistbox,fileи другие типы обрабатываются индивидуально в хукеsave, что исключает ошибки типа "count(): Argument #1 must be of type Countable|array".
В итоге пользователи получили бесшовный опыт: "магические" поля стали полноправной частью массового редактирования товаров.
Заключение
Обновление плагина xtradbrowmarket до версии 4.0.0 выводит управление дополнительными полями товаров на качественно новый уровень. Собственная административная панель с продуманными фильтрами, пагинацией и мультиязычной поддержкой делает ежедневную работу с каталогом удобной и эффективной. А глубокая интеграция с Market Mass Edit превращает процесс наполнения и актуализации данных в быструю операцию, доступную буквально в несколько кликов.
Мы продолжаем развивать экосистему плагинов для Cotonti, стремясь предоставить максимальные возможности для владельцев интернет-магазинов и разработчиков. Следите за обновлениями в официальном репозитории и на форуме поддержки. Вы можете поддержать разработчика финансово для создания новых плагинов и совершенствования существующих разработок, а также можете нанять для выполнения задания.
Отзывы
Отзывов пока нет
Комментарии (0)
Обсуждение страницы в Telegram
Связанные публикации
Похожие страницы
Автор контента
Оффлайн
Carbonate Sodium
Последняя авторизация: 11.08.2026 12:35
Чем могу помочь?
Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.
Разработки на GitHub бесплатно
Telegram
- Страница размещена: 11.08.2026 11:32
- Последнее обновление: 11.08.2026 12:16
- Язык:
English