$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;
}

Вход
Регистрация
Помощь
Тема закрыта

