Magento:高级搜索结果的分层导航

Posted

技术标签:

【中文标题】Magento:高级搜索结果的分层导航【英文标题】:Magento: Layered Navigation on Advanced Search Results 【发布时间】:2012-10-26 06:05:59 【问题描述】:

我需要在 Magento 高级搜索结果页面上显示分层导航过滤器,就像在目录搜索结果页面上一样。

我已经根据需要将 XML 块移动到 catalogsearch_advanced_result:

<reference name="left">
<block type="catalogsearch/layer" name="catalogsearch.leftnav" template="catalog/layer/view.phtml"/>
</reference>

块被调用,但没有任何显示。我跟踪了核心文件,发现在 Catalog/Block/Layer/View.php 中这个函数没有返回任何属性(第 161 行):

protected function _getFilterableAttributes()

    $attributes = $this->getData('_filterable_attributes');
    if (is_null($attributes)) 
        $attributes = $this->getLayer()->getFilterableAttributes();
        $this->setData('_filterable_attributes', $attributes);
    

    return $attributes;

我将 getFilterableAttributes() 追踪到 Catalog/Model/Layer.php 文件中,但从这一点来看,很难弄清楚目录搜索和高级搜索之间的区别在哪里。

我基本上只是想让它以任何可能的方式工作。任何帮助或指导将不胜感激!

编辑:

我的产品属性设置正确如下:

【问题讨论】:

你的属性是is_filterable_in_search(而不仅仅是is_filterable)吗? 查看我上面的编辑,这是我的属性设置方式。 高级搜索和分层导航不能混用。 我不明白为什么不这样做 - 它必须以与目录搜索相同的方式工作。它只需要根据选择的过滤器(由产品集合数据缩小范围)附加一个查询字符串 上周我遇到了同样的问题,我只是不使用高级搜索而是将正确的参数发布到列表页面。 (意味着我创建了自己的高级搜索,只使用分层导航。) 【参考方案1】:

嘿,我已经成功地将分层导航引入高级搜索页面。 执行以下步骤: 第 1 步:在 catalogsearch.xml 中更新如下 `

    <label>Advanced Search Result</label>
    <update handle="page_two_columns_right" />
    <!-- Mage_Catalogsearch -->
    <reference name="root">
        <action method="setTemplate"><template>page/3columns.phtml</template></action>
    </reference>
    <reference name="left">
        <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/>
    </reference>`

第 2 步:清除缓存,一切顺利。

现在,为了让过滤器正常工作,您需要在请求 url 中进行一些修改 例如在高级搜索价格过滤器中是这样的 price[from]=1&amp;price[to]=100 而不是 price=1,100

【讨论】:

以上是关于Magento:高级搜索结果的分层导航的主要内容,如果未能解决你的问题,请参考以下文章

Magento 从目录和搜索中隐藏可配置产品

JIRA的使用介绍(四)- 高级搜索(JQL)

Magento 分层导航“您不能多次定义相关名称‘mycustomattribute’”

Solr高级查询Facet

Solr高级查询Facet

改进Magento中的分层导航