Исправьте бесплатно и заочно мой программный код

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 hell_dude
  • Группа: Заблокирован
  • Сообщений: 11
  • Регистрация: 05.09.2012

17.09.2012 15:59

подскажите пожалуйста
появилась необходимость показать все товары невидимые на витрине
при наследовании 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;
    }


Поделиться темой: