Market Mass Edit — массовое редактирование товаров модуля Market
Предоставляет удобный интерфейс для быстрого просмотра и массового редактирования товаров. Позволяет изменять заголовки, алиасы, мета-теги, категории, цены, статусы, арти
Market Mass Edit — массовое редактирование товаров модуля Market
Плагин для Cotonti v1.+
Предоставляет удобный интерфейс для быстрого просмотра и массового редактирования товаров.
Позволяет изменять заголовки, алиасы, мета-теги, категории, цены, статусы, артикулы, даты и любые дополнительные поля (экстраполя) одновременно для нескольких товаров.
Оглавление
- История создания и решаемая проблема
- Возможности
- Требования
- Структура плагина
- Установка
- Настройка плагина в админке
- Использование
- Административная панель (две вкладки)
- Подробное описание каждого файла
- Пример использования
- Устранение неполадок
- Лицензия
- Ссылки
История создания и решаемая проблема
Управление большим каталогом товаров в Cotonti требует частого обновления мета‑тегов, цен, статусов и других полей сразу у многих позиций. Штатные средства редактирования позволяют изменять только по одному товару за раз, что замедляет работу администратора.
Market Mass Edit решает эту задачу: он выводит все товары в единой таблице с фильтрацией и поиском, а затем позволяет массово вносить изменения. Интерфейс настраивается — можно скрыть ненужные колонки и сосредоточиться только на тех полях, которые требуется обновить.
Плагин работает строго через стандартное API модуля market, не нарушая целостность данных и проверки прав доступа.
Возможности
- Две вкладки администрирования:
- «Список товаров» — просмотр товаров с поиском и фильтрацией.
- «Массовое редактирование» — таблица с возможностью одновременного изменения полей.
- Мощный поиск и фильтрация:
- Поиск по заголовку, тексту, артикулу.
- Фильтр по точному ID товара.
- Выбор категории через выпадающий список с поддержкой Select2 (включая вложенность).
- Фильтр по статусу (все / на рассмотрении / опубликованы / черновики).
- Гибкая настройка отображаемых колонок — администратор выбирает, какие поля показывать в таблице редактирования:
- ID, Заголовок, Алиас, Meta Title, Meta Description, Категория, Цена (осн.), Цена (USD), Статус, Артикул, Обновить дату, Изменён, Удалить.
- Отдельная опция включает/отключает экстраполя.
- Массовое редактирование — изменения применяются только к тем полям, значения которых действительно изменились (сравнение с текущими данными), что исключает ложные обновления.
- Массовое удаление — возможность пометить товары на удаление прямо из таблицы массового редактирования.
- Пагинация — на обеих вкладках, с сохранением параметров фильтра при переходах.
- Настройки плагина — количество элементов на странице.
- Полная локализация — русский и английский языки из коробки.
Требования
- Cotonti v1.+ (актуальная ветка)
- Модуль
market(должен быть установлен и активен) - PHP 8.5+
- MySQL 8.4+
- Права администратора для доступа к панели управления плагином.
Структура плагина
marketmassedit/
├── marketmassedit.setup.php # Регистрация плагина и описание настроек
├── marketmassedit.admin.php # Административная панель (хук tools)
├── lang/
│ ├── marketmassedit.ru.lang.php # Русский языковой файл
│ └── marketmassedit.en.lang.php # Английский языковой файл
└── tpl/
└── marketmassedit.admin.tpl # Шаблон админ‑панели
Установка
- Скачайте ZIP‑архив плагина из официального репозитория.
- Распакуйте архив в папку
plugins/вашего сайта. - Зайдите в админ‑панель Cotonti → Расширения.
- Найдите «Market Mass Edit» и нажмите «Установить».
Плагин сразу готов к работе — перейдите в Инструменты → Market Mass Edit.
Настройка плагина в админке
Все параметры доступны по пути Расширения → Market Mass Edit → Конфигурация.
Параметр Тип По умолчанию Описание perpage string 20 Количество товаров, отображаемых на одной странице списка/таблицы. show_id radio 1 Показывать колонку «ID». show_title radio 1 Показывать колонку «Заголовок». show_alias radio 1 Показывать колонку «Алиас». show_metatitle radio 1 Показывать колонку «Meta Title». show_metadesc radio 1 Показывать колонку «Meta Description». show_cat radio 1 Показывать колонку «Категория». show_costdflt radio 1 Показывать колонку «Цена (осн.)». show_cost_usd radio 1 Показывать колонку «Цена (USD)». show_state radio 1 Показывать колонку «Статус». show_pcod radio 1 Показывать колонку «Артикул». show_datenow radio 1 Показывать колонку «Обновить дату». show_updated radio 1 Показывать колонку «Изменён». show_delete radio 1 Показывать колонку «Удалить». show_extrafields radio 1 Показывать колонки дополнительных полей (экстраполя).
Изменение любой из этих опций мгновенно влияет на отображение таблицы массового редактирования.
Использование
Просмотр и поиск товаров
- Перейдите в Инструменты → Market Mass Edit.
- Откроется вкладка «Список товаров».
- Вы можете:
- Ввести поисковый запрос в поле «Поиск».
- Выбрать категорию из выпадающего списка.
- Указать точный ID товара.
- Выбрать область поиска: заголовок, заголовок+описание, артикул.
- Нажмите «Фильтр» — таблица обновится в соответствии с критериями.
Результаты отображаются в таблице с колонками: ID, Заголовок (ссылка на товар), Категория, Цена (осн.), Цена (USD), Статус. Предусмотрена пагинация с подсветкой найденных слов.
Массовое редактирование товаров
- Перейдите на вкладку «Массовое редактирование».
- При необходимости используйте фильтры (поиск, категория, ID, статус), чтобы сузить список товаров.
- Настройте видимость колонок в конфигурации плагина (см. выше) — скройте те поля, которые не собираетесь менять.
- Внесите изменения прямо в поля таблицы. Каждое поле можно редактировать независимо.
- Нажмите «Сохранить изменения».
Важно: Плагин обновляет только те поля, значение которых действительно отличается от текущего. Это экономит ресурсы и предотвращает ложные срабатывания триггеров (например, обновление даты изменения).
Массовое удаление: в столбце «Удалить» переключите радиокнопку в «Да» для товаров, которые нужно удалить. При сохранении они будут удалены через стандартную процедуру модуля market (с очисткой кеша, обработкой файлов и т.д.).
Административная панель (две вкладки)
Панель доступна через Админка → Инструменты → Market Mass Edit.
Вкладка «Список товаров»
- Форма поиска с возможностью фильтрации по фразе, категории и ID.
- Таблица со ссылками на товары, категориями, ценами и статусами.
- Пагинация с сохранением параметров поиска.
- Подсветка найденных слов в заголовках и тексте (при включённом поиске).
Вкладка «Массовое редактирование»
- Аналогичная форма поиска и фильтрации (включая фильтр по статусу).
- Таблица с выбранными администратором колонками.
- Поля для редактирования: текстовые поля, выпадающие списки (категория, статус), чекбоксы, селекторы дат.
- Экстраполя автоматически подгружаются и отображаются в соответствии с их типом.
- Кнопка «Сохранить изменения» применяет все сделанные правки.
- Пагинация сохраняет фильтры и номер страницы после сохранения.
Подробное описание каждого файла
marketmassedit.setup.php
Регистрирует плагин в Cotonti и описывает его настройки.
- Секция
[BEGIN_COT_EXT]содержит метаданные: код, имя, категорию, версию, зависимости (market), права доступа. - Секция
[BEGIN_COT_EXT_CONFIG]перечисляет все параметры конфигурации с указанием порядка, типа, значения по умолчанию и описания. Эти параметры автоматически появляются в форме настроек плагина.
marketmassedit.admin.php
Главный файл, подключаемый через хук tools. Реализует всю логику админ‑панели:
- Подключает необходимые зависимости (
marketmassedit,market). - Определяет текущую вкладку и обрабатывает POST‑запросы сохранения.
- Вкладка «Список товаров»: формирует SQL‑запрос с динамическим WHERE в зависимости от фильтров, получает данные, строит таблицу, генерирует пагинацию, подсветку слов, передаёт переменные в шаблон.
- Вкладка «Массовое редактирование»:
- При
POSTсa=updateзапускает цикл обработки: загружает текущие данные для переданных ID, сравнивает каждое поле и записывает только изменившиеся. Обрабатывает удаление черезMarketControlService. - При обычном отображении строит таблицу, учитывая настройки видимости колонок. Для каждой колонки создаётся соответствующее поле ввода (текст, select, дата, чекбокс).
- Поддерживает экстраполя через вызов
cot_build_extrafields().
- При
marketmassedit.functions.php
В плагине не используется отдельный файл функций. Категории отображаются стандартной функцией модуля market — cot_market_selectcat_select2(), которая поддерживает Select2 и черный список категорий, заданный в настройках модуля market.
Языковые файлы
marketmassedit.ru.lang.php и marketmassedit.en.lang.php содержат все текстовые строки интерфейса: названия плагина, вкладок, подписи полей, сообщения, описания настроек.
Шаблон marketmassedit.admin.tpl
HTML‑шаблон с блоками XTemplate, использующий Bootstrap 5 (встроен в Cotonti). Включает:
- Переключение вкладок через
nav-tabs. - Формы поиска с скрытыми полями для сохранения параметров админки.
- Таблицы данных с условными блоками для каждой колонки (
IF {SHOW_...}). - Блоки пагинации.
- JavaScript для подсветки поисковых слов.
Пример использования
Задача: необходимо обновить цены и статус у 50 товаров из категории «Электросамокаты», а также исправить артикулы.
- Откройте панель «Market Mass Edit», вкладка «Массовое редактирование».
- В фильтре выберите категорию «Электросамокаты», статус «Все».
- В настройках плагина включите показ колонок «Цена (осн.)», «Цена (USD)», «Статус», «Артикул»; остальные можно временно скрыть для удобства.
- Внесите нужные изменения в ячейках таблицы.
- Нажмите «Сохранить изменения». Плагин обработает только те поля, которые были изменены, и выведет сообщение «Обновлено товаров: 50».
Устранение неполадок
- Фильтр не находит товары. Убедитесь, что критерии поиска заданы корректно. Проверьте, не активен ли фильтр по статусу, скрывающий нужные товары.
- После сохранения изменений не видно результата. Возможно, вы изменили поле, значение которого совпадает с текущим — в этом случае плагин специально не выполняет запрос к базе. Проверьте сообщение о количестве обновлённых записей.
- Не отображаются экстраполя. Включите опцию «Показывать экстраполя» в настройках плагина. Убедитесь, что в модуле
marketдействительно зарегистрированы дополнительные поля. - Выпадающий список категорий пуст. Проверьте права администратора на чтение категорий. Возможно, в настройках модуля
marketзадан черный список категорий (marketblacktreecatspage), который исключает все видимые категории. - После фильтрации сбивается адресная строка. Используйте кнопку «Фильтр» вместо прямого ввода URL. Плагин корректно обрабатывает скрытые поля формы.
Некорректная работа выпадающего списка категорий (Select2).
Выбор категорий в формах поиска и редактирования реализован через штатную функциюcot_market_selectcat_select2(), использующую библиотеку Select2, которая уже включена в Cotonti. Для корректного отображения и функционирования в теме вашей админки должны быть определены стили и скрипты, аналогичные приведённым ниже.Необходимые стили (добавьте в CSS вашей админ-темы):
/* Основной контейнер для одиночного select2 (не multiple) */ .select2-container--default .select2-selection--single { background-color: var(--bs-body-bg, #fff); border: 1px solid var(--bs-border-color, #ced4da); border-radius: 0.375rem; padding: 0.375rem 0.75rem; font-size: 1rem; line-height: 1.5; height: 38px; display: flex; align-items: center; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .select2-container--default .select2-selection--single:focus { border-color: #86b7fe; box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25); outline: 0; } .select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--bs-body-color, #212529); line-height: 1.5; padding-left: 0; padding-right: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; right: 0.75rem; } .select2-container--default .select2-results__options { max-height: 50vh !important; overflow-y: auto; background-color: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: var(--bs-link-hover-color, #FF5722); color: #fff; } .select2-container--default .select2-results__group { font-weight: bold; padding: 0.375rem 0.75rem; color: var(--bs-body-color, #212529); background-color: var(--bs-sidebar-bg, #f8f9fa); } /* Тёмная тема */ [data-bs-theme="dark"] .select2-container--default .select2-selection--single { background-color: var(--bs-body-bg, #212529); border-color: var(--bs-sidebar-border, #444); } [data-bs-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--bs-body-color, #e9ecef); } [data-bs-theme="dark"] .select2-container--default .select2-results__options { background-color: var(--bs-body-bg, #212529); color: var(--bs-body-color, #e9ecef); } [data-bs-theme="dark"] .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #343a40 !important; color: #fff; } [data-bs-theme="dark"] .select2-container--default .select2-results__group { color: var(--bs-body-color, #e9ecef); }Необходимый JavaScript (подключите в админ-теме):
$(document).ready(function () { const selectName = 'c'; const selectSelector = 'select[name="' + selectName + '"]'; $(selectSelector).select2({ placeholder: "---", width: '100%', templateResult: function (state) { if (!state.id) return state.text; const depth = parseInt(state.element?.dataset?.depth || '0', 10); const text = state.text.trim(); const indent = '\u00A0'.repeat(depth * 3); return depth === 0 ? $('<span><strong>' + text + '</strong></span>') : $('<span>' + indent + text + '</span>'); }, templateSelection: function (state) { return state.id ? state.text : state.text; } }); $(selectSelector).on('select2:select', function (e) { const selectedText = e.params.data.text.trim(); const containerId = $(this).attr('name'); const renderedSelector = '#select2-' + containerId + '-container'; $(renderedSelector).attr('title', selectedText); }); const selectedOption = $(selectSelector).find(':selected'); if (selectedOption.length) { const cleanTitle = selectedOption.text().trim(); const containerId = $(selectSelector).attr('name'); const renderedSelector = '#select2-' + containerId + '-container'; $(renderedSelector).attr('title', cleanTitle); } });Если после добавления стилей и скриптов список всё ещё отображается некорректно, проверьте, что в вашей админ-теме не используются другие стили для Select2, которые могут переопределять данные. Перепроверьте, что jQuery и Select2 загружаются до выполнения приведённого кода.
Лицензия
BSD. Свободное использование и модификация при сохранении авторских прав.
Ссылки
- Официальный репозиторий GitHub
- Страница плагина на Cotonti Marketplace
- Поддержка на форуме
Product has no downloadable file
Page Discussion in Telegram
Content author
Offline
webitproff
Last logged: 2026-09-14 12:32
- 2026-09-14 11:45
- 2026-09-14 12:28
Related and similar products
Market PRO Showcase
CMS, Script and Engine - website of an online showcase, online store of digital products and digital goods. Different prices in different currencies for the product. Online cryptocurrency payment for goods and services.