$collection ->addAttributeToFilter( 'status' , array ('in' => Mage::getSingleton('catalog/product_status')->getVisibleStatusIds()) ) ;
Как программно исключить из коллекции товары, не подлежащие публикации на витрине?
03.11.2010 16:28
17.09.2012 15:40
подскажите пожалуйста
появилась необходимость показать все товары невидимые на витрине
при наследовании Grid которая показывает все товары, добавил условие, как у вас показано, только для вывода невидимых товаров
до этого момента, все фильтры работали, а после этого изменения все записи выводятся на одну страницу(без лимита по 20, 50, 100 и т.д.) и не работают фильтры
подскажите пожалуйста в чем проблема
появилась необходимость показать все товары невидимые на витрине
при наследовании Grid которая показывает все товары, добавил условие, как у вас показано, только для вывода невидимых товаров
$collection->addAttributeToFilter('entity_id',array ('nin'=>$NotId));
до этого момента, все фильтры работали, а после этого изменения все записи выводятся на одну страницу(без лимита по 20, 50, 100 и т.д.) и не работают фильтры
подскажите пожалуйста в чем проблема
protected function _prepareCollection() { $collection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect('sku') ->addAttributeToSelect('name') ->addAttributeToSelect('attribute_set_id') ->addAttributeToSelect('type_id'); parent::_prepareCollection(); $this->getCollection(); $ids = Mage::getModel('core/resource')->getConnection('core_read')->fetchAll( 'SELECT e.entity_id FROM `catalog_product_flat_1` AS `e` JOIN `catalog_category_product_index` AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 AND cat_index.visibility IN(2, 4) AND cat_index.category_id IN ( SELECT entity_id FROM catalog_category_entity WHERE entity_id NOT IN(806,807,2288) AND path NOT LIKE "%/806/%" AND path NOT LIKE "%/807/%" AND path NOT LIKE "%/2288/%" ) JOIN `catalog_product_index_price` AS `price_index` ON price_index.entity_id = e.entity_id AND price_index.website_id = "1" AND price_index.customer_group_id = 0 GROUP BY e.entity_id' ); $i=0; foreach($ids as $id) { $NotId[$i++] = $id['entity_id']; } $collection->addAttributeToFilter('entity_id',array ('nin'=>$NotId)); $this->setCollection($collection); return $this; }