Searchresult错了。 Mage :: registry('current_layer')未设置

时间:2013-09-20 11:39:48

标签: magento

我们重新设计了一家magento商店。那家商店有一个非常经济实惠的searchresult页面。 现在,在重新设计之后,搜索不再起作用了。 我将问题分解为List.php(Mage \ Catalog \ Block \ Product \ List.php),其中调用函数_getProductCollection()以获得结果。此函数获取图层$layer = $this->getLayer();,与旧版本存在主要区别:

public function getLayer()
{
    $layer = Mage::registry('current_layer');
    if ($layer) {
        return $layer;
    }
    return Mage::getSingleton('catalog/layer');
}

在旧版本中设置了Mage::registry('current_layer');。在新版本中没有设置!如果未设置,则会返回一个新的return Mage::getSingleton('catalog/layer');,其中包含所有产品。

我想不出更进一步。如何在旧版本中找到此图层的设置位置? 我还能做什么?

1 个答案:

答案 0 :(得分:2)

搜索图层模型由catalogsearch/layer块注册,该块通常由catalogsearch.xml布局文件添加到搜索页面中:

<catalogsearch_result_index translate="label">
    <label>Quick Search Form</label>
    <reference name="root">
        <action method="setTemplate"><template>page/3columns.phtml</template></action>
    </reference>
    <reference name="left">
        <block type="catalogsearch/layer" name="catalogsearch.leftnav" after="currency" template="catalog/layer/view.phtml"/>
    </reference>
    <!-- ... -->
</catalogsearch_result_index>

因为它确实不见了,你应该把它添加回你的布局。