经过大量搜索,我终于找到了一个解决方案,将分层导航添加到Magento主页。乍一看,它正如预期的那样正常运行过滤结果。 但是,有一个问题,因为过滤结果的URL都在其网址中添加了“根目录”。这导致404 - 但是,如果我取出'根目录',网址工作正常。
我错过了什么?请帮忙! 提前感谢您的帮助!
将分层导航添加到主页的代码:
<reference name="left">
<block type="catalog/navigation" name="catalog.cat.leftnav" before="sidenav.left" template="catalog/navigation/left.phtml"/>
<block type="catalog/layer_view" name="catalog.leftnav" after="catalog.cat.leftnav" template="catalog/layer/view.phtml"/>
<action method="unsetChild"><alias>right.reports.product.viewed</alias></action>
<action method="unsetChild"><alias>right.reports.product.compared</alias></action>
</reference>
<reference name="content">
<block type="catalog/product_list" name="product_home" template="catalog/product/list.phtml">
<action method="setCategoryId">[b]<category_id>3</category_id>[/b]</action>
<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager" />
</block>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>
</reference>
答案 0 :(得分:0)
分层导航需要一个类别作为基础来获取产品,要过滤的子类别等。然后,在主页上,它默认采用根类别,相应的产品集合就像在其他上一样。 “常见”类别页面:它使用URL重写链接到当前类别。
要阻止在产品网址中使用当前类别,您可以通过将文件app/code/core/Mage/Catalog/Model/Layer.php
复制到app/code/local/Mage/Catalog/Model/
并使用以下内容更改其中的prepareProductCollection($collection)
来重写图层模型:
public function prepareProductCollection($collection)
{
$collection
->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents();
if ($this->getCurrentCategory()->getId() == $this->getCurrentStore()->getRootCategoryId()) {
$collection->addUrlRewrite(0);
} else {
$collection->addUrlRewrite($this->getCurrentCategory()->getId());
}
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
return $this;
}