Magento - 停止在锚类别中显示的儿童产品

时间:2014-04-10 14:14:28

标签: magento anchor children

在锚类别页面上,我试图仅显示该类别中直接包含的产品。我不想展示儿童类别的产品,在这种情况下不合适。我确实需要过滤当前类别中的产品,因此我需要分层导航,这需要一个锚类别。

最初我想过滤view.phtml模板中的产品,但这只是过滤视图中的产品而不是一个明智的答案。当我这样做时,我的页面上存在很大的差距,其中存在儿童产品,但根本没有显示。产品数量(例如,#117;产品中的1-12个和#34;)是"不正确"。

根据我的阅读,这将需要核心重写。可能是一个索引过程。我真的不知道从哪里开始这个重写,我确信它会更加参与。

我的假设是否有误?你已经解决了这个问题吗?

2 个答案:

答案 0 :(得分:5)

转到app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php

复制到app/code/local/Mage/Catalog/Model/Resource/Product/Collection.php

找到函数addCategoryFilter(,在这里找到代码

 public function addCategoryFilter(Mage_Catalog_Model_Category $category)
    {
        $this->_productLimitationFilters['category_id'] = $category->getId();
/*    start to comment here     
if ($category->getIsAnchor()) {
            unset($this->_productLimitationFilters['category_is_anchor']);
        } else {
            $this->_productLimitationFilters['category_is_anchor'] = 1;
        }*/
/* new line */

     $this->_productLimitationFilters['category_is_anchor'] = 1;

        if ($this->getStoreId() == Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID) {
            $this->_applyZeroStoreProductLimitations();
        } else {
            $this->_applyProductLimitations();
        }

        return $this;
    }

答案 1 :(得分:-1)

如果我理解你的情况正确,你不需要一行代码。无论其层次结构如何,Magento都可以自由地输入任何类别的产品。

请考虑以下情况:

A类 - >类别a

然后,产品只能分配到a类而不是A类。这将与整个magento系统协调工作,包括分层导航和页面上没有显示的产品。