如何使magento过滤器像类别一样工作

Posted

技术标签:

【中文标题】如何使magento过滤器像类别一样工作【英文标题】:how to make magento filter works like category 【发布时间】:2015-07-01 06:20:10 【问题描述】:

我想让 magento 中的类别使用属性/过滤器。

假设我有一个属性“CupAttr”,它不用于分层导航。然后我创建了一个名为 CupCat 的类别,它使用“CupAttr”来拉取产品以在 CupCat 类别中显示它们。

这可能吗?我想这样做的原因是我想尽量减少分类产品的维护。

谢谢

已编辑:

Amit 的解决方案完美运行,但这带来了另一个问题。列表中显示的产品与可以从分层导航中过滤的产品不同。

我实际上需要为任何类别选择所有产品(因为我不会将任何产品添加到任何类别,它们都是空白的),然后我开始按属性过滤该特定类别的产品。

再次感谢。

【问题讨论】:

这意味着您希望始终按 CupAttr 过滤 CupCat 类别集合 【参考方案1】:

在这种情况下,你可以使用magento event/observer.

在事件 catalog_block_product_list_collection 上挂钩观察者。

然后使用addAttributeToFilter('CupAttrAttibiteCode');按 CupAttr 过滤集合。

config.xml 代码:

<?xml version="1.0"?>
    <config>
      <global>
        <models>
            <xyzcatalog>
                 <class>Xyz_Catalog_Model</class>
            </xyzcatalog>
        </models>
        <events>
          <catalog_block_product_list_collection> <!-- event -->
            <observers>
              <xyz_catalog_block_product_list_collection>
                <type>singleton</type>
                <class>Xyz_Catalog_Model_Observer</class>
                <method>apply_CupAttr_filter</method>
              </xyz_catalog_block_product_list_collection>
            </observers>
          </catalog_block_product_list_collection>     
        </events>
      </global>
    </config>

观察者代码位置:

创建目录结构-app/code/local/Xyz/Catalog/Model/Observer.php

第一个“CupAttr”用于产品列表,用于使用此属性进行过滤

<?php
class Xyz_Catalog_Model__Observer

    public function __construct()
    
    
    public function apply_CupAttr_filter($observer)

        //apply filter when category is CupCat
        if(Mage::registry('current_category') &&(Mage::registry('current_category')->getId()=='CupCatCatrgoryId') ):

        $collection=$observer->getEvent()->getCollection();
        $collection->addAttributeToFilter('CupAttrAttibiteCode','FilterExpression');
        endif;
        return $this;
    

【讨论】:

感谢您的快速响应。我怎样才能让它更有活力?我可能有一些其他属性要用于过滤其他类别?例如,我想使用类别的“url 键”作为属性标识符。然后每次加载类别时,我都会得到“url键”,然后使用该键进行过滤。 (我将拥有与带有是/否字段的 url 键相同的属性)。对不起,我是 Magento 的新手。再次感谢您的帮助。 嗨阿米特,我刚刚编辑了我的帖子,你能再帮我一次吗?谢谢。 过滤器不适用是否有原因?如果我在受保护的函数 _getProductCollection() 方法中添加 addFieldToFilter ,它会起作用,如果我通过观察者执行它会更改 $collection 因为我可以看到 $collection->getSelect() 结果,但它确实对前端

以上是关于如何使magento过滤器像类别一样工作的主要内容,如果未能解决你的问题,请参考以下文章

Magento 类别页面未包含属性过滤器中的所有产品

php magento 2按根类别添加过滤器

php magento 2按根类别添加过滤器

从类别中加载所有产品并按 Magento 中选定的多选属性进行过滤

过滤自动完成材料。一些输入表单像一个输入一样工作

如何使 pixi js 掩码过滤器响应移动视图上的触摸,就像它在桌面视图中移动指针一样?