2016-01-28 1 views
3

Я пытаюсь создать одного наблюдателя для применения дополнительных фильтров к коллекции продуктов.Magento 2 - Фильтры продуктов, использующие событие Obeserver

Так я использую Magento 2 события: catalog_product_collection_load_after

код Наблюдатель:

public function execute(\Magento\Framework\Event\Observer $observer) 
    { 
     $collection = $observer->getEvent()->getCollection(); 
     $collection->addAttributeToFilter('size',10); 
     return $this; 
    } 

Но выше код работает отлично с коллекцией изделий, но показывая неправильный пагинацию и продукт подсчитывать

То же произошло для слой навигация.

Есть ли решение для этого?

+0

вы найти решение вашей проблемы? –

+0

Привет, у вас есть решение –

+0

Вы нашли решение проблемы? –

ответ

0

Попробуйте это:

namespace Vendor\Module\Observer; 

use Magento\Framework\Event\ObserverInterface; 
use Magento\Catalog\Model\Layer\Resolver as LayerResolver; 

class CatalogProductCollectionLoadAfter implements ObserverInterface 
{ 
    /** 
    * @var \Magento\Catalog\Model\Layer\Category 
    */ 
    protected $catalogLayer; 

    /** 
    * @param LayerResolver $layerResolver, 
    */ 
    public function __construct(
     LayerResolver $layerResolver 
    ) { 
     $this->catalogLayer = $layerResolver->get(); 
    } 

    public function execute(\Magento\Framework\Event\Observer $observer) 
    { 
     // Get selected filters 
     $layer   = $this->catalogLayer; 
     $activeFilters = $layer->getState()->getFilters(); 
    } 
}