Групове вимкнення або видалення продуктів із CSV
Масове видалення товарів у PrestaShop – модуль Pro | PrestaDev
Масове видалення товарів у PrestaShop – модуль Pro | PrestaDev
Масове видалення товарів у PrestaShop – модуль Pro | PrestaDev
Масове видалення товарів у PrestaShop – модуль Pro | PrestaDev
Масове видалення товарів у PrestaShop – модуль Pro | PrestaDev
Масове видалення товарів у PrestaShop – модуль Pro | PrestaDev
Масове видалення товарів у PrestaShop – модуль Pro | PrestaDev

Видалення товарів Pro — масове видалення та вимкнення товарів у PrestaShop

Module version: 2.1.0

PrestaShop compatibility: 1.7.x 8.x 9.x

Файл модуля оновлено: 2026-09-09 13:44:02

Дані товару оновлено: 2026-09-27 22:34:21


Видалення товарів Pro — це модуль для back office PrestaShop, який масово вимикає або видаляє товари та комбінації. Список для обробки можна сформувати трьома способами: завантажити файл CSV, вставити ідентифікатори в поле або вибрати товари за умовами, накладеними на каталог, без жодного файлу. Кожен запуск розбивається на короткі кроки, що виконуються у фоновому режимі, тож навіть список із 200 000 позицій не перевищує ліміт часу виконання PHP. Вікно прогресу показує смугу, темп і час, що залишився, а виконання можна призупинити, відновити й зупинити. Закриття браузера нічого не псує — після повернення модуль пропонує продовжити з рядка, на якому зупинився, і не обробляє нічого двічі. Перед кожною зміною модуль може зберегти резервну копію CSV, а після завершення формує звіт з одним рядком на ідентифікатор. Типово ввімкнений пробний запуск читає весь список і нічого не зберігає, а відсотковий поріг відхиляє запуск, що охоплює надто велику частину каталогу. Модуль працює виключно в панелі адміністрування, не реєструє жодного hook і не додає нічого до front office.

Тип ліцензії / оновлення
98,00 zł
79,67 złnetto
Price history:

опис

Найважливіші функції

Три способи побудувати список товарів

  • Файл CSV або TXT до 20 МБ. Ви вказуєте роздільник (крапка з комою, кома, табуляція, вертикальна риска) і номер колонки з ідентифікатором, рахуючи від нуля. Роздільник визначається автоматично під час завантаження, а модуль показує перший рядок файлу з номерами колонок, щоб не доводилося рахувати в голові. Решта колонок ігнорується, тож звіт, експортований з будь-якого інструмента, придатний до використання без обробки.
  • Вставлений список — один ідентифікатор на рядок або розділені комами чи крапками з комою. Не потребує файлу чи прав на запис.
  • Селектор товарів — список, побудований з умов, накладених на каталог, описаний нижче.

Селектор товарів: список без файлу CSV

Вкладка «Виберіть товари» будує той самий список з умов, а не з експорту. Доступні критерії:

  • відсутність залишку на складі,
  • відсутність продажів протягом вказаної кількості місяців,
  • товар вимкнений у вибраному магазині,
  • відсутність зображення,
  • відсутність категорії, відмінної від стандартної,
  • базова ціна дорівнює точно нулю,
  • бренд, постачальник, категорія (за бажанням разом із підкатегоріями) та значення характеристики,
  • шаблон артикулу, де зірочка замінює будь-який рядок символів, а знак питання — рівно один.

Позначені умови мають виконуватися одночасно — вони поєднуються через AND, а не OR. Кнопка «Порахувати» показує кількість збігів до створення проходу, їхню частку в каталозі та чинний поріг безпеки. Лічильник походить із того самого запиту, який наповнює чергу, тож показує те, чого проход насправді торкнеться, — а не оцінку. Зміна будь-якої умови одразу скидає попередній результат, щоб на екрані ніколи не залишалося число, яке не відповідає формі. Результат селектора потрапляє в ту саму чергу, що й список із файлу, тож успадковує пробний прохід, резервну копію, звіт, історію та відсотковий поріг.

Два вікові критерії описані саме так, як вони працюють: схема PrestaShop не зберігає, коли у товару закінчився залишок і коли його було вимкнено, тому кількість днів рахується від останньої зміни рядка товару. Умова звучить так: «зараз немає залишку, а товар ніхто не чіпав X днів».

За чим модуль розпізнає товари

  • артикул (reference), EAN-13, UPC та ідентифікатор товару (id_product),
  • MPN та ISBN у тих версіях PrestaShop, каталог яких має ці колонки — модуль перевіряє це сам і не пропонує поля, якого немає,
  • префікс для видалення з початку кожного ідентифікатора, один раз (за префікса AB рядок AB123 шукається як 123),
  • обробка кожного ідентифікатора лише один раз, коли список містить повтори,
  • політика для ідентифікатора, що підходить до кількох товарів: залишити й повідомити, обробити всі або обробити перший.

Що модуль робить із товарами

  • Вимкнути товари — оборотна дія, товар залишається в каталозі, і його можна знову ввімкнути.
  • Видалити товари — видалення з каталогу, незворотне.
  • Видалити лише комбінації — видаляє варіанти, а самі товари залишає.

Захист від помилки

  • Пробний прохід, увімкнений за замовчуванням: читає весь список, повідомляє, скільки ідентифікаторів знайдено, а скільки ні, і нічого не записує в каталог.
  • Відсотковий поріг каталогу — прохід, що охоплює більший відсоток товарів, ніж установлено (за замовчуванням 30%), відхиляється. Нуль вимикає цей захист. Поріг можна свідомо обійти одноразовим позначенням поля; пробного проходу це ніколи не стосується.
  • Резервна копія CSV, що зберігається перед зміною, з п’ятнадцятьма колонками: id_product, id_product_attribute, reference, ean13, upc, name, link_rewrite, price, quantity, active, id_manufacturer, id_supplier, id_category_default, categories та виконана дія.
  • Товари, що присутні в замовленнях — на вибір: вимкнути замість видалення, залишити й повідомити або все одно видалити.
  • Права доступу, що зчитуються з вкладки Каталог → Товари: право редагування дозволяє вимикати, право видалення — видаляти. Якщо права неможливо визначити, модуль відмовляє замість того, щоб припускати згоду.
  • Питання підтвердження точно називає те, що станеться: окреме для пробного проходу, окреме для вимкнення, окреме для видалення з одного магазину й окреме для видалення з усіх магазинів інсталяції.
  • Ліміт 200 000 позицій на один прохід. Більший вибір відхиляється з проханням звузити його, а не тихо обрізається.

Прохід у фоновому режимі, без ліміту часу виконання

  • Список потрапляє до черги в базі даних, а прохід просуває її короткими кроками через AJAX. Довжина кроку налаштовується в діапазоні від 2 до 30 секунд; модуль показує поруч max_execution_time, заявлений сервером, і те, скільки реально має намір витратити на один крок.
  • Вікно прогресу показує смугу, кількість оброблених рядків, темп, час, що минув, і час, що залишився.
  • Прохід можна призупинити, відновити та зупинити. Те, що вже оброблено, залишається обробленим.
  • Закриття вкладки перериває прохід, але нічого не руйнує — після повторного входу модуль пропонує продовжити з місця зупинки й не обробляє рядок двічі.
  • Дві вкладки браузера не ведуть один прохід паралельно: завдання займається однією з них, а друга отримує про це інформацію.
  • За вимкненого JavaScript екран надає кнопку «Обробити один крок», яка просуває прохід вручну.

Звіт та історія

  • Звіт CSV з одним рядком на ідентифікатор і колонками: line, identifier, result, id_product, id_product_attribute, message.
  • Колонка результату приймає одне зі значень: ok, not-found, skipped, error та pending для рядків, до яких зупинений прохід не дійшов.
  • Колонка повідомлення містить сталі англійські коди — понад двадцять розрізнюваних ситуацій, від deleted і detached до ambiguous, in-orders: skipped чи refused-by-core. Коди не змінюються разом із мовою панелі, тож фільтр у таблиці працює незалежно від налаштувань back office. Усі вони пояснені у вкладці Допомога.
  • Історія проходів показує номер, дату, магазин, дію, стан, кількість рядків, виконаних, незнайдених, пропущених і помилкових, а також тривалість.
  • З історії можна завантажити звіт, резервну копію та вихідний список цього проходу, а непотрібний запис — видалити.
  • Проходи, запущені із селектора, несуть в історії опис вибраних умов, з назвами бренду, постачальника, категорії та значення характеристики — а не лише номерами.

Налаштування

  • відсотковий поріг каталогу,
  • політика за замовчуванням для товарів, що присутні в замовленнях,
  • політика за замовчуванням для ідентифікатора, що підходить до кількох товарів,
  • позначення перемикача резервної копії за замовчуванням,
  • довжина кроку в секундах,
  • період зберігання проходів і файлів у днях (нуль означає «назавжди») та прибирання, що виконується одразу під час запису,
  • інформація про те, чи каталог для файлів модуля доступний для запису.

Multistore і робота кількох людей

  • Магазин, у якому шукаються товари, вибирається на екрані проходу.
  • Охоплення визначає, що відбувається з товаром, який належить до кількох магазинів: «лише цей магазин» відв’язує його від поточного магазину й залишає в решті, «кожен магазин» видаляє його з усієї інсталяції.
  • Обліковий запис із доступом до частини магазинів бачить лише свої магазини й не може запустити прохід з охопленням усієї інсталяції.
  • Список магазинів заморожується разом із проходом, тож наступні кроки не сягнуть далі, ніж обліковий запис, який створив прохід.
  • Списки брендів, постачальників, категорій і значень характеристик у селекторі звужуються до вибраного магазину.

Для кого цей модуль

  • магазини, що впорядковують каталог після імпорту, міграції або зміни постачальника,
  • магазини із сезонним асортиментом, у яких після сезону зникає кілька тисяч позицій,
  • люди, які сьогодні видаляють товари вручну у списку в панелі або SQL-запитом прямо в базі,
  • інсталяції multistore, де потрібно видалити товар з одного магазину, не чіпаючи решту,
  • магазини, у яких над каталогом працює кілька людей із різними правами доступу.

Технічні вимоги

  • PrestaShop від 1.6.0.0 до 9.x,
  • PHP від 7.0 до 8.5,
  • MySQL 5.6+ або MariaDB 10.x+,
  • каталог modules/pdproductdelete/files/ з правом запису — модуль сам це перевіряє й повідомляє про це на екрані,
  • відсутність зовнішніх залежностей: жодного Composer, жодних бібліотек поза PrestaShop,
  • модуль не реєструє хуків і не додає нічого до front office — працює виключно в адміністративній панелі,
  • інтерфейс польською та англійською мовами.

Чого модуль не робить

Чесно, щоб не було сюрпризів:

  • Резервна копія — це знімок, а не кнопка відновлення. Вона містить дані, достатні для відтворення запису товару та для побудови перенаправлень 301 зі старих адрес, але модуль не має функції «скасувати».
  • Видалення товару є незворотним. PrestaShop видаляє його разом із зображеннями, комбінаціями, залишком на складі, цінами та зв’язками. Вимкнення товару залишається оборотним.
  • Модуль не вимірює, відколи товар не має залишку або відколи він вимкнений — таких дат PrestaShop не зберігає. Вікові умови спираються на дату останньої зміни товару, і це прямо написано біля кожної з них.
  • Немає завдання CRON чи розкладу. Прохід запускає людина з панелі.
  • Зв’язки товарів із категоріями в PrestaShop не прив’язані до магазину, тому умова «відсутність категорії, відмінної від стандартної» неминуче зчитується для всієї інсталяції. Модуль повідомляє про це в Допомозі.

Деталі продукту

Підтримка Prestashop 9.x
Так
Підтримка Prestashop 8.x
Так
Підтримка Prestashop 1.7.x
Так
Підтримка Prestashop 1.6.x
Так
Модульні переклади
EN, ENG
Безкоштовна підтримка
Так
Безкоштовні оновлення (1 рік)
Так
Легко встановлюється
Так
Потрібна модифікація двигуна
Немає
PDPD-FULL

Changelog

Release history for this product. Expand an entry to see what changed.

  • moduł został kompletnie przepisany pod PrestaShop 9.x
  • dodano sporo nowych funkcji / opcji w module
  • kasowanie procesem ajaxowym z pominięciem czasu exe kucji skryptów php

FAQ

Find answers to the most common questions about this product.

Вимкнення є зворотним: товар залишається в каталозі, зникає з сайту, і його можна будь-якої миті знову ввімкнути. Видалення є незворотним — PrestaShop видаляє товар разом із зображеннями, комбінаціями, залишками на складі, цінами та пов’язаними даними. Модуль пропонує обидві дії, а за замовчуванням рекомендує вимкнення та пробний запуск, щоб перша спроба не могла нічого зіпсувати.

Ні. Модуль зберігає резервну копію у форматі CSV перед внесенням змін, але це знімок стану, а не кнопка відновлення. Файл містить ідентифікатор товару та комбінації, індекс, EAN-13, UPC, назву, URL-адресу, ціну, складський залишок, статус активності, бренд, постачальника, категорію за замовчуванням, список категорій, а також виконану дію. Цього достатньо, щоб відтворити запис товару та налаштувати перенаправлення 301 зі старих адрес, і саме для цього створюється ця копія.

Ні. Список можна створити трьома способами: завантажити файл CSV або TXT до 20 МБ, вставити ідентифікатори прямо в поле на екрані або скористатися вкладкою «Виберіть товари», яка формує список з умов, накладених на каталог, і не потребує жодного файлу.

Відсутній складський запас, відсутній продаж протягом вказаної кількості місяців, товар вимкнений у вибраному магазині, відсутнє зображення, відсутня категорія, відмінна від стандартної, базова ціна дорівнює точно нулю, бренд, постачальник, категорія (за бажанням разом із підкатегоріями), значення характеристики та шаблон індексу, у якому зірочка замінює будь-який рядок символів, а знак питання — рівно один. Позначені умови мають виконуватися одночасно — їх поєднує AND, а не OR.

Так. Кнопка «Порахувати» показує кількість збігів ще до створення проходу, разом із її часткою в каталозі магазину та чинним порогом безпеки. Лічильник походить із того самого запиту, який наповнює чергу, тож показує те, чого прохід справді торкнеться, а не оцінку. Зміна будь-якої умови одразу скидає попередній результат, щоб на екрані не залишилося числа, яке не відповідає формі.

Процес зупиниться на рядку, на якому він саме перебував, і нічого не буде втрачено. Після повторного входу на сторінку модуля з’явиться пропозиція завершити процес від місця зупинки. Жоден рядок не обробляється двічі, оскільки стан черги зберігається в базі даних, а не в браузері.

Ні, оскільки модуль не виконує всю роботу в одному запиті. Список потрапляє до черги в базі, а процес просуває його короткими кроками через AJAX. Тривалість кроку налаштовується в діапазоні від 2 до 30 секунд, а екран налаштувань показує поруч значення max_execution_time, яке повідомляє сервер, і те, скільки секунд модуль реально має намір витратити на один крок.

До 200 000 позицій. Вибір, що охоплює більше, відхиляється з проханням звузити умови та запустити частинами — модуль не обрізає список тихо, бо тихо обрізаний список означав би, що частина товарів залишається недоторканою без відома оператора.

Модуль відхиляє справжній запуск, що охоплює більший відсоток товарів магазину, ніж встановлений поріг; за замовчуванням це 30 відсотків. Значення нуль вимикає цей захист. Поріг можна свідомо обійти одноразовим позначенням поля на екрані запуску. Пробного запуску це обмеження ніколи не стосується, бо такий запуск і так нічого не змінює.

Це визначається окремим налаштуванням із трьома можливостями: вимкнути їх замість видалення, залишити їх і повідомити у звіті або все ж видалити. Замовлення зберігає власну копію назви та ціни, тож історія продажів переживе видалення товару, але зв’язок позиції замовлення з карткою товару — вже ні.

Магазин, у якому виконується пошук товарів, вибирається на екрані перебігу, а окреме налаштування області дії визначає, що робити з товаром, який належить до кількох магазинів. Область дії «лише цей магазин» відв’язує товар від поточного магазину й залишає його в інших, а «кожен магазин» видаляє його з усієї інсталяції. Обліковий запис із доступом до частини магазинів бачить виключно свої магазини й не може запустити перебіг, що охоплює всю інсталяцію. Список магазинів заморожується разом із перебігом, тож наступні кроки не вийдуть за межі доступу облікового запису, який створив перебіг.

Права доступу зчитуються з вкладки Каталог → Товари. Право на редагування дозволяє вимикати товари, а право на видалення — видаляти їх і прибирати комбінації. Обліковий запис без права на видалення взагалі не побачить на екрані цих дій. Якщо права доступу неможливо визначити, модуль відмовляє замість того, щоб припускати згоду.

За артикулом (reference), кодом EAN-13, кодом UPC або ідентифікатором товару. У тих версіях PrestaShop, каталог яких має відповідні стовпці, також доступні MPN та ISBN — модуль сам це перевіряє і не пропонує поля, якого немає в базі. Додатково можна видалити сталий префікс з початку кожного ідентифікатора та вирішити, що робити, коли один ідентифікатор підходить до кількох товарів.

CSV-файл з одним рядком на ідентифікатор, зі стовпцями: номер рядка, ідентифікатор, результат, ідентифікатор товару, ідентифікатор комбінації та повідомлення. Стовпець результату приймає значення ok, not-found, skipped, error та pending для рядків, до яких зупинений процес не дійшов. Повідомлення записуються сталими англійськими кодами — понад двадцять розрізнюваних ситуацій — щоб фільтр у електронній таблиці працював незалежно від мови панелі. Усі коди пояснено на вкладці Допомога.

Ні. Процес запускає людина з рівня панелі адміністрування. Модуль нічого не видаляє автоматично або за розкладом.

Ні. Модуль не реєструє жодного hook і не додає нічого до front office — працює виключно в панелі адміністрування. Таблиця стилів і скрипт завантажуються лише на його власному екрані конфігурації.

PrestaShop не зберігає момент, коли в товару закінчився запас на складі або коли його було вимкнено, тому модулю немає звідки взяти таку дату. Кількість днів відраховується від останньої зміни рядка товару, а умова звучить так: «зараз немає запасу, а товар ніхто не змінював протягом X днів». Те саме правило стосується умови щодо вимкненого товару. Це прямо написано на екрані біля кожного з цих полів і повторено в Довідці.

Модуль підтримує PrestaShop від 1.6.0.0 до 9.x, а також PHP від 7.0 до 8.5, а також MySQL 5.6 або новішу версію і MariaDB 10.x або новішу версію. Він не потребує Composer або будь-якої бібліотеки поза PrestaShop. Натомість потрібне право запису до каталогу modules/pdproductdelete/files/, у якому зберігаються завантажені списки, резервні копії та звіти; модуль сам перевіряє цю умову й повідомляє про неї на екрані.

Так. Вікно перебігу має кнопки призупинення, відновлення та зупинки, а поруч показує смугу перебігу, швидкість, час, що минув, і час, що залишився. Те, що вже було оброблено, залишається обробленим — зупинка не скасовує виконану роботу. Зупинений запуск також отримує звіт.

Процес не буде просуватися автоматично, але це не є нездоланною перешкодою. Після запуску на екрані з’являється кнопка «Обробити один крок», яка просуває чергу на один крок за кожне натискання. Модуль прямо повідомляє про це в повідомленні, видимому саме для браузерів без JavaScript.

Відгуки (0)

Немає відгуків