2012-02-16 2 views
0

Я использую случайный код для отображения продуктов из разных категорий на домашней странице нашего магазина с magento. Это прекрасно работает. Теперь я хотел бы исключить все продукты, на которых есть только изображение с образцами, появившееся на главной странице. Я пытался сделать это с помощью следующего кода:Отключить продукты с изображением заполнителя на домашней странице в magento

class Mage_Catalog_Block_Product_List_Random extends Mage_Catalog_Block_Product_List 
{ 
    protected function _getProductCollection() 
    { 
     if (is_null($this->_productCollection)) { 
      $categoryID = $this->getCategoryId(); 
      if($categoryID) 
      { 
       $category = new Mage_Catalog_Model_Category(); 
       $category->load($categoryID); // this is category id 
       $collection = $category->getProductCollection(); 
      } else 
      { 
       $collection = Mage::getResourceModel('catalog/product_collection'); 
      } 
      Mage::getModel('catalog/layer')->prepareProductCollection($collection); 
      $collection->getSelect()->order('rand()'); 
      $collection->addStoreFilter(); 
      $numProducts = $this->getNumProducts() ? $this->getNumProducts() : 3; 
      $collection->setPage(1, $numProducts)->load(); 

      $collection->addAttributeToFilter(
       array('attribute' => 'small_image', 'eq' => ''), 
       array('attribute' => 'small_image', 'eq' => 'no_selection') 
      ); 

      $this->_productCollection = $collection; 
     } 
     return $this->_productCollection; 
    } 
} 

Но это не работает, и продукты с только шаблонного изображения сделать еще показать.

Любая помощь будет высоко оценена.

Спасибо, Daniel

ответ

3

вы добавляете «small_image» фильтр после В коллекции уже была загружена, так что ваш фильтр будет не больше влияют на сбор.

Кроме того, ваш фильтр ИЛИ выглядит странным для меня. Предполагаемый «no_selection» - это изображение с образцом-заполнителем, тогда ваш фильтр делает принимать изображения-заполнители, где, я думаю, вы хотите снижение их.

Попробуйте использовать и фильтр вместо:

$collection->addAttributeToFilter(
    array('attribute' => 'small_image', 'neq' => '') 
); 
$collection->addAttributeToFilter(
    array('attribute' => 'small_image', 'neq' => 'no_selection') 
); 
+0

Привет Jürgen, спасибо за вашу помощь. Теперь работает. –

Смежные вопросы