如何制作Magento高级搜索显示未指定搜索词时的所有产品?

时间:2011-09-16 15:26:48

标签: magento advanced-search

有人可以帮我解决这个问题吗?

我在magento上使用高级搜索并且效果很好,但是当我点击“搜索”而没有输入任何搜索字词时,它会给出错误或注意:“请指定至少一个搜索字词。”

如果我点击“搜索”而不输入任何搜索字词,我希望在所有类别中显示我的所有产品,怎么可能?

提前谢谢你。 非常感谢您的帮助:))

此致

P.S。我使用magento 1.5社区版

2 个答案:

答案 0 :(得分:0)

在系统下 - >配置 - >目录 - >目录搜索

将“最小查询长度”更改为0并再次尝试搜索。

我想指出,根据您搜索的属性数量以及产品数量,通配符搜索可能会非常繁琐。这也取决于LIKE vs FULLTEXT。

至于第二个问题,这可以处理上面管理员在同一个地方的分层导航。如果“搜索结果小于”,我将设置“应用分层导航”的数字,等于主要可见性中的产品数量。默认情况下,类别是分层导航的一部分。

答案 1 :(得分:0)

这是一篇很老的帖子,但是由于我最近遇到了同样的问题,我是如何解决它的。拒绝您在没有任何参数的情况下进行搜索的代码位于文件

app/code/core/Mage/CatalogSearch/Model/Advanced.php

在第208行的函数addFilters()中(Magento v1.8.1):

if ($allConditions) {
        $this->getProductCollection()->addFieldsToFilter($allConditions);
    } else if (!$hasConditions) {
        Mage::throwException(Mage::helper('catalogsearch')->__('Please specify at least one search term.'));
    }

所以我们想做的就是摆脱抛出的异常。由于我们希望永远不会修改任何核心文件,因此我们重写此类并重载addFilters()函数以捕获异常,从而启用空的高级搜索。

在您的模块中创建文件

app/code/local/Yournamespace/Yourmodule/Models/Catalogsearch/Advanced.php


class Yournamespace_Yourmodel_Model_Catalogsearch_Advanced extends Mage_CatalogSearch_Model_Advanced {

/**
 * call original addFilters but catch Exception
 * so search WITHOUT search parameters is allowed.
 * 
 * @param array $values
 * @return \Yournamespace_Yourmodel_Model_Catalogsearch_Advanced
 */
public function addFilters($values) {

    try {
        return parent::addFilters($values);
    } catch (Mage_Core_Exception $ex) {

        return $this;
    }

}

}

并使用新的高级搜索模型重写原始高级搜索模型:

app/code/local/Yournamespace/Yourmodule/etc/config.xml

...
<global>
    <models>
        <catalogsearch>
            <rewrite>
                <advanced>Yournamespace_Yourmodel_Model_Catalogsearch_Advanced</advanced>
            </rewrite>
        </catalogsearch>
    </models>
</global>
...

这应该可以解决问题。