1

我只需要在类别页面中显示简单的产品,但我无法将“不可见”设置为可配置项,因为我需要可配置项中的活动产品页面。

我发现这段代码从清单中删除了可配置项:

  $_productCollection=$this->getLoadedProductCollection();
  $_productCollection = clone $this->getLoadedProductCollection();
  $_productCollection->clear()
                     ->addAttributeToFilter('type_id', 'simple')
                     ->load();

  $_helper = $this->helper('catalog/output');

它有效,但是,在分层导航中,可配置产品仍在计数。它就像“颜色:红色(2)”,但我只有 1 个红色(简单)。如何完全删除可配置产品?

4

1 回答 1

2

分层导航使用单独加载的集合对象。

确保导航过滤器旁边的正确计数的一种可能方法是覆盖模型Mage_Catalog_Model_Layer并将过滤器添加到其功能Mage_Catalog_Model_Layer::prepareProductCollection

public function prepareProductCollection($collection)
    {
        $collection
            ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
            ->addMinimalPrice()
            ->addFinalPrice()
            ->addTaxPercents()
            ->addUrlRewrite($this->getCurrentCategory()->getId())
            ->addAttributeToFilter('type_id', 'simple');

        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

        return $this;
    }

为此,请在本地代码池中创建一个模块。在config.xml文件中将以下节点添加到global节点中

<models>
        <catalog>
            <rewrite>
                <layer>YourPackage_YourModule_Model_Rewrite_Layer</layer>
            </rewrite>
        </catalog>
</models>

在您的模块中,在文件夹“模型”下添加一个目录“重写”并Layer.php在其中创建一个文件。在创建的文件中Model/Rewrite/Layer.php添加一个具有以下定义的类:

class YourPackage_YourModule_Model_Rewrite_Layer extends Mage_Catalog_Model_Layer {
}

将上面的函数添加到这个类中,清除缓存。

于 2013-02-01T16:07:15.287 回答