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 # Шаблон админ‑панели

Установка

  1. Скачайте ZIP‑архив плагина из официального репозитория.
  2. Распакуйте архив в папку plugins/ вашего сайта.
  3. Зайдите в админ‑панель Cotonti → Расширения.
  4. Найдите «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 Показывать колонки дополнительных полей (экстраполя).

Изменение любой из этих опций мгновенно влияет на отображение таблицы массового редактирования.


Использование

Просмотр и поиск товаров

  1. Перейдите в Инструменты → Market Mass Edit.
  2. Откроется вкладка «Список товаров».
  3. Вы можете:
    • Ввести поисковый запрос в поле «Поиск».
    • Выбрать категорию из выпадающего списка.
    • Указать точный ID товара.
    • Выбрать область поиска: заголовок, заголовок+описание, артикул.
  4. Нажмите «Фильтр» — таблица обновится в соответствии с критериями.

Результаты отображаются в таблице с колонками: ID, Заголовок (ссылка на товар), Категория, Цена (осн.), Цена (USD), Статус. Предусмотрена пагинация с подсветкой найденных слов.

Массовое редактирование товаров

  1. Перейдите на вкладку «Массовое редактирование».
  2. При необходимости используйте фильтры (поиск, категория, ID, статус), чтобы сузить список товаров.
  3. Настройте видимость колонок в конфигурации плагина (см. выше) — скройте те поля, которые не собираетесь менять.
  4. Внесите изменения прямо в поля таблицы. Каждое поле можно редактировать независимо.
  5. Нажмите «Сохранить изменения».

Важно: Плагин обновляет только те поля, значение которых действительно отличается от текущего. Это экономит ресурсы и предотвращает ложные срабатывания триггеров (например, обновление даты изменения).

Массовое удаление: в столбце «Удалить» переключите радиокнопку в «Да» для товаров, которые нужно удалить. При сохранении они будут удалены через стандартную процедуру модуля market (с очисткой кеша, обработкой файлов и т.д.).


Административная панель (две вкладки)

Панель доступна через Админка → Инструменты → Market Mass Edit.

Вкладка «Список товаров»

  • Форма поиска с возможностью фильтрации по фразе, категории и ID.
  • Таблица со ссылками на товары, категориями, ценами и статусами.
  • Пагинация с сохранением параметров поиска.
  • Подсветка найденных слов в заголовках и тексте (при включённом поиске).

Вкладка «Массовое редактирование»

  • Аналогичная форма поиска и фильтрации (включая фильтр по статусу).
  • Таблица с выбранными администратором колонками.
  • Поля для редактирования: текстовые поля, выпадающие списки (категория, статус), чекбоксы, селекторы дат.
  • Экстраполя автоматически подгружаются и отображаются в соответствии с их типом.
  • Кнопка «Сохранить изменения» применяет все сделанные правки.
  • Пагинация сохраняет фильтры и номер страницы после сохранения.

Подробное описание каждого файла

marketmassedit.setup.php

Регистрирует плагин в Cotonti и описывает его настройки.

  • Секция [BEGIN_COT_EXT] содержит метаданные: код, имя, категорию, версию, зависимости (market), права доступа.
  • Секция [BEGIN_COT_EXT_CONFIG] перечисляет все параметры конфигурации с указанием порядка, типа, значения по умолчанию и описания. Эти параметры автоматически появляются в форме настроек плагина.

marketmassedit.admin.php

Главный файл, подключаемый через хук tools. Реализует всю логику админ‑панели:

  1. Подключает необходимые зависимости (marketmassedit, market).
  2. Определяет текущую вкладку и обрабатывает POST‑запросы сохранения.
  3. Вкладка «Список товаров»: формирует SQL‑запрос с динамическим WHERE в зависимости от фильтров, получает данные, строит таблицу, генерирует пагинацию, подсветку слов, передаёт переменные в шаблон.
  4. Вкладка «Массовое редактирование»:
    • При POST с a=update запускает цикл обработки: загружает текущие данные для переданных ID, сравнивает каждое поле и записывает только изменившиеся. Обрабатывает удаление через MarketControlService.
    • При обычном отображении строит таблицу, учитывая настройки видимости колонок. Для каждой колонки создаётся соответствующее поле ввода (текст, select, дата, чекбокс).
    • Поддерживает экстраполя через вызов cot_build_extrafields().

marketmassedit.functions.php

В плагине не используется отдельный файл функций. Категории отображаются стандартной функцией модуля marketcot_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 товаров из категории «Электросамокаты», а также исправить артикулы.

  1. Откройте панель «Market Mass Edit», вкладка «Массовое редактирование».
  2. В фильтре выберите категорию «Электросамокаты», статус «Все».
  3. В настройках плагина включите показ колонок «Цена (осн.)», «Цена (USD)», «Статус», «Артикул»; остальные можно временно скрыть для удобства.
  4. Внесите нужные изменения в ячейках таблицы.
  5. Нажмите «Сохранить изменения». Плагин обработает только те поля, которые были изменены, и выведет сообщение «Обновлено товаров: 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
  • Поддержка на форуме
Buy Market Mass Edit — массовое редактирование товаров модуля Market at low prices. Online store offers to order Market Mass Edit — массовое редактирование товаров модуля Market, view full description, detailed characteristics, product photos and current prices with discounts


Rating based on reviews:
Stars received: 0
Total reviews: 0
Average rating: 0
8 minutes read

Reviews to products

No reviews yet


Add to Cart

Product has no downloadable file

 

Page Discussion in Telegram

Content author

webitproff

Offline

webitproff

Last logged: 2026-09-14 12:32

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • 2026-09-14 11:45
  • 2026-09-14 12:28

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.