Opencart. Удаление пустых (незаполненных) товаров из поиска по товару — столкнулся на практике с такой проблемой, в БД появлялись пустые карточки товара (номенклатуры) без наименования. Периодически сбоит синхронизация БД с CRM-системой, к которой у меня нет доступа. И, так как я не могу почистить БД или исправить саму синхронизацию, нужно было что-то придумывать.

Решение проблемы:
В контроллере /catalog/controller/product/search.php ищем следующие строки:
foreach ($results as $result) {
После данного кода вставляем всего 1 строку, решение очень простое, фильтруем товар по заполненности id товара:
if(!isset($result['product_id'])) continue;
Вот и все, проблема решена!
Бывает, что проблема возникает в других местах сайта (каталоге или сопутствующих товарах) — в таких ситуациях смотрите контроллер данной части сайта (где возникает такая же ошибка) и подобным образом добавляем проверку на id.
Таким же образом, можно убрать товары без изображений или товары с пустыми именами — вместо product_id, вставляйте любое нужное Вам значение из массива $data[‘products’] — thumb или name — и т.д.
Бывает, что причина появления данных карточек возникает по вине сторонних модификаций, например, Brainy Filter — в таком случае, данное решение не поможет и нужно будет смотреть файлы самого плагина. Похожая ситуация, когда «Умный Фильтр» мешал отображению товаров в каталоге и решение возникшей проблемы описаны в данной статье.
Протестировано на OcStore 2.3
Дата создания статьи: 14.08.2022
Надеюсь, эта статья была для вас полезной и интересной. Если вы хотите, чтобы я создавал больше контента и делал это чаще, вы можете поддержать меня донатом. Благодарю вас за ваш вклад в творческий процесс!
Т-Банк (Тинькофф): 2200700867913161
Ozon Bank: 2204240107102131
Boosty: https://boosty.to/woronokin/donate
Личный блог






