Magento,定制产品清单

Dan*_*oof 5 php magento faceted-search layered-navigation

我根据Mage_Catalog_Block_Product_List创建了自己的产品列表页面:

应用程序/代码/本地/法师/目录/座/产品/ Special.php:

class Mage_Catalog_Block_Product_Special extends Mage_Catalog_Block_Product_List
{      
    /* Original contents */

    /* Here I call addAttributeToFilter on product collection, and then... */
    return $this->_productCollection; 
}
Run Code Online (Sandbox Code Playgroud)

我将其包含在中心列的CMS页面中:

<reference name="content">
    <block type="catalog/product_special" template="catalog/product/list.phtml" />
</reference>
Run Code Online (Sandbox Code Playgroud)

问题是:产品列表显示正常,但我的左栏没有分层导航.

这很奇怪,因为我使用与普通列表完全相同的模板.

我检查了几件事:

  • Mage_Catalog_Block_Product_Special只是一个代理类.这不起作用.即使我在CMS页面上使用块类型"catalog/product_list",我也不会获得分层导航.
  • 没有任何扩展可以覆盖关键的核心类.
  • 我也尝试创建自己的模块并将其列在例如'mycatalog'下.这导致完全相同的问题.

我有一种感觉,这与尝试在CMS页面上包含产品列表有关,但我无法找到确切的问题.

任何有关这方面的帮助将非常感谢.

Jon*_*Day 4

您需要将渲染图层的块添加到左列中。

如果查看catalog.xml,您将看到该catalog_category_layered节点包含以下内容:

<reference name="left">
        <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/>
        ...
</reference>
Run Code Online (Sandbox Code Playgroud)

因此,将其添加到您的 CMS xml 布局更新中,并且应该在您的 CMS 页面上显示图层块。

如果您在单击可过滤属性之一时遇到产品列表未被过滤的问题,这可能是因为 Layer_View 块呈现的链接假设它们将回发到 a CategoryController,而不是CmsController将呈现您的 CMS页。这可能是问题,也可能不是问题,所以如果它不起作用,请在此处报告,我们可以尝试解决它。