1

我们重新设计了一家 magento 商店。那家商店有一个非常个性化的搜索结果页面。现在,重新设计后,搜索不再起作用。我将问题分解为 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');包含所有产品的新产品。

我不能再想了。在旧版本中如何找到该图层的设置位置?我还能做什么?

4

1 回答 1

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>

由于它肯定已经丢失,您应该将其添加回您的布局中。

于 2013-09-20T11:47:12.800 回答