Фильтр товаров категории по идентификатору набора атрибутов - PullRequest
0 голосов
/ 08 декабря 2018

Я создал пользовательский модуль, который переписывает класс Mage_Catalog_Block_Product_List, теперь я хочу отфильтровать коллекцию товаров категории по attribute_set_id.Ниже приведен мой код для этого:

 protected function _getProductCollection()
        {
            if (is_null($this->_productCollection)) {
                $layer = $this->getLayer();
                /* @var $layer Mage_Catalog_Model_Layer */
                if ($this->getShowRootCategory()) {
                    $this->setCategoryId(Mage::app()->getStore()->getRootCategoryId());
                }

                // if this is a product view page
                if (Mage::registry('product')) {
                    // get collection of categories this product is associated with
                    $categories = Mage::registry('product')->getCategoryCollection()
                        ->setPage(1, 1)
                        ->load();
                    // if the product is associated with any category
                    if ($categories->count()) {
                        // show products from this category
                        $this->setCategoryId(current($categories->getIterator()));
                    }
                }

                $origCategory = null;
                if ($this->getCategoryId()) {
                    $category = Mage::getModel('catalog/category')->load($this->getCategoryId());
                    if ($category->getId()) {
                        $origCategory = $layer->getCurrentCategory();
                        $layer->setCurrentCategory($category);
                        $this->addModelTags($category);
                    }
                }
                $this->_productCollection = $layer->getProductCollection();

                /** Filter I used to filter collection by attribute_set_id**/               
                $this->_productCollection->addAttributeToFilter('attribute_set_id', array('eq' => 4));
                $this->prepareSortableFieldsByCategory($layer->getCurrentCategory());

                if ($origCategory) {
                    $layer->setCurrentCategory($origCategory);
                }
            }

            return $this->_productCollection;
        }

, но после этого я получаю сообщение об ошибке ниже:

"SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец 'e.attribute_set_id 'in' where clause ',

...