向自定义页面添加分层导航块


9

在Magento中,分层导航块在产品列表页面中可以很好地工作。

如何将此块成功复制到自定义页面,其中有自定义产品列表?

注意:仅将块添加到XML,然后调用它getChildHtml('blockname')并不能解决问题。


2
您需要将默认类别添加到已分类导航块代码中,因为已分类导航是根据当前类别的产品构建的。
Sander Mangel

+1寻求帮助,如果有多个类别的多个产品(例如,交易产品)怎么办?
pzirkind

2
我会为此设置一个特殊的类别。可能还有其他方法,但这绝对是最简单,最可扩展的方法!
桑德甜菜

1
如果您确实想要,则必须创建一个自定义类别。分层导航确实希望有一个可以使用的类别,在不重写很多类的情况下,它不会产生简单的ProductCollection。
Rick Kuipers 2013年

Answers:


5

基本上,您需要做的是extend/overwriteMage_Catalog_Block_Product_List中 (List.php)重写getProductCollection()方法:

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        // Build collection and set it
        $collection = "...";
        $this->setProductCollection($collection);
    }

    return $this->_productCollection;
}

完成后,我同时覆盖了Mage_Catalog_Model_Layer类和,Mage_Catalog_Model_Category并引入了一个新变量:

protected $_customProductCollection;

getProductCollection()在两个类中都覆盖了,并将其添加到方法的开头:

if(isset($this->_customProductCollection)){
    return $this->_customProductCollection;
}

我也有一种方法可以"customProductCollection"在这两个类中进行设置。设置好之后,分层导航/类别的其余数据将基于此集合。

在此处查看初始问题和答案。

祝好运 ;)


设置customproductcollection的方法是什么?您从哪里调用它?
easymoden00b 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.