Как известно переносить товары в Opencart можно заходя либо в каждый товар по отдельности, либо массово с помощью различных модулей например Batch Editor, но иногда возникают и более сложные ситуации. На днях столкнулся с подобной. Предыстория данной проблемы была следующая — был произведен парсинг сайта с последующей заливкой через CSV Price Pro, причем при заливке создались категории типа «обои для кухни/обои для холла/обои для кабинета» и необходимо было отловить все такие товары и растащить одновременно в три категории «обои для кухни», «обои для холла», «обои для кабинета». Лучший вариант для решения подобной задачи — воспользоваться прямым доступом к базе данных MySQL.
Предположим, что id категории «обои для кухни/обои для холла/обои для кабинета» — 6699
id категории «обои для кухни» — 3937
id категории «обои для холла» — 4599
id категории «обои для кабинета» — 3914
(ID категорий можно определить либо из базы данных из таблицы oc_category_discription либо более простой вариант такой
Заходим в PhpMyAdmin и выполняем несколько MySQL скриптов такого содержания.
находим все товары из необходимой категории и копируем в необходимые категории
INSERT IGNORE INTO oc_product_to_category( product_id, category_id ) SELECT product_id, 3937
FROM oc_product_to_category WHERE `category_id` = ‘6699’;
INSERT IGNORE INTO oc_product_to_category( product_id, category_id ) SELECT product_id, 4599
FROM oc_product_to_category WHERE `category_id` = ‘6699’;
INSERT IGNORE INTO oc_product_to_category( product_id, category_id ) SELECT product_id, 3914
FROM oc_product_to_category WHERE `category_id` = ‘6699’;
удаляем данные из базы данных о категории, из которой копировали товар
DELETE FROM `имя-базы`.`oc_category` WHERE `oc_category`.`category_id` = ‘6699’;
DELETE FROM `имя-базы`.`oc_category_description` WHERE `oc_category_description`.`category_id` = 6699;
естественно если при создании базы данных бы использовали префикс «ос_», иначе используете со своим префиксом.
Таким образом можно упростить процедуру присваивания товару других категорий.