Думаю у многих владельцев opencart бывает такая ситуация, когда товар при добавлении привязывается к одной категории, которая является дочерней сразу, либо потом становится дочерней. А в этом случае при переходе покупателя в родительскую категорию такого товара не будет видно. Некоторые предлагают решение в виде добавления ‘filter_sub_category’ => true, но не во всех случаях это решение подходит. Бывает так, что нужно именно привязать товар ко всем родительским категориям.
Такая задача была поставлена клиентом. Дело в том, что модуль ocfilter не выводился в родительских категориях, пока товар не был привязан к этим категориям. А привязать 12 000 товаров ручками слишком трудозатратно. Обдумав задачу, я написал оптимальное решение — скрипт, который проходит по всем товарам, смотрит к какой категории товар привязан, выбирает все родительские категории у этих категорий, сравнивает и при необходимости делает привязку к тем категориям, в которых товара еще нет. При этом ставится флаг о том, что товар обработан и больше его нет нужды трогать. То есть при следующем запуске обработанные товары уже не будут обрабатываться.
Код скрипта вполне лаконичен и подробно прокомментирован:
Кому не жаль своего времени — можете переписывать с картинки, остальные могут связаться со мной и за небольшую оплату получить скрипт вместе с установкой. 😉