0

谁能帮我解决这个问题?

我在 magento 上使用高级搜索,它运行良好,但是当我点击“搜索”而不输入任何搜索词时,它会给出错误或注释:“请指定至少一个搜索词。”

当我点击“搜索”而不输入任何搜索词时,我希望它显示所有类别的所有产品,这怎么可能?

先感谢您。非常感谢您的帮助 : ))

问候

PS我使用magento 1.5社区版

4

2 回答 2

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>
...

这应该够了吧。

于 2014-06-24T08:58:55.487 回答
0

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

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

我想指出,通配符搜索可能会非常费力,具体取决于您搜索的属性数量以及产品数量。这也可能取决于 LIKE 与 FULLTEXT。

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

于 2011-09-16T15:49:21.067 回答