Требование: у нас есть куча продуктов с изображениями и без. Нам нужно только отображать продукты с изображениями в веб-интерфейсе.
Что я сделал: я перепробовал почти все ресурсы SO, такие как:
Фильтровать товары без изображений на Magento.
Как я могу найти все продукты без изображений в Magento?
Скрыть продукты без изображений magento
и их различные комбинации без удачи .. Я думаю, что-то изменилось в новой версии Magento. Я использую версию 1.8.1.0
Кто-нибудь может пролить свет здесь?
ОБНОВЛЕНИЕ: На моей отладке я узнал, что
->addAttributeToFilter('small_image', array('neq' => 'no_selection'))
действительно работал. Но возникает ошибка в многоуровневом ценовом фильтре. Я думал, что это не работает раньше. Я получаю ошибку, похожую на: Ошибка фильтра цен Magento 1.7 (Столбец не найден: 1054 Неизвестный столбец ‘e.min_price’ в ‘предложении where’)…
Согласно ответу Рой на поставленный выше вопрос, я считаю, что нам нужно отредактировать файл: Mage / Catalog / Model / Layer / Filter / price.php
Вы пробовали это?
->addAttributeToFilter('small_image', array('neq' => 'no_selection'))
Это можно сделать с помощью событий Magento. Я добавил наблюдателя на событие:
catalog_product_collection_load_before
который добавляет фильтр для удаления всех продуктов без изображений при загрузке коллекции продуктов. Наблюдатель выглядит следующим образом:
public function filterProductsWithoutImages($observer) {
if (isset($observer['collection'])) {
$collection = $observer['collection'];
$collection->addAttributeToFilter('small_image', array('neq' => "no_selection"));
return $this;
}
}
Здесь нам нужно отключить «Использовать плоский каталог товаров». Для этого:
Администратор> Конфигурация> Каталог> Внешний интерфейс> Использовать плоский каталог продукта для «Нет»
Так как эта фильтрация несовместима с использованием «Плоский каталог товаров»
С этим хорошо работает количество товаров на страницах поиска.