【问题标题】:Magento 2 - Product filters using Observer EventMagento 2 - 使用观察者事件的产品过滤器
【发布时间】:2016-05-05 17:18:50
【问题描述】:

我正在尝试创建一个观察者以将其他过滤器应用于产品集合。

所以我使用 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;
    }

但上面的代码在产品集合上工作正常,但显示错误的分页和产品计数

图层导航也是如此。

有什么解决办法吗?

【问题讨论】:

  • 您找到解决问题的方法了吗?
  • 您好,您找到解决方案了吗
  • 您找到解决问题的方法了吗?
  • 还没有找到解决办法?在多个事件中遇到相同的问题。产品集合被过滤得很好,但是计数和分页都是错误的

标签: magento magento2


【解决方案1】:

试试这个:

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();
    }
}

【讨论】:

    猜你喜欢
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2019-12-21
    • 2014-07-15
    • 2016-09-19
    • 1970-01-01
    相关资源
    最近更新 更多