有人可以帮我解决这个问题吗?
我在magento上使用高级搜索并且效果很好,但是当我点击“搜索”而没有输入任何搜索字词时,它会给出错误或注意:“请指定至少一个搜索字词。”
如果我点击“搜索”而不输入任何搜索字词,我希望在所有类别中显示我的所有产品,怎么可能?
提前谢谢你。 非常感谢您的帮助:))
此致
P.S。我使用magento 1.5社区版
答案 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>
...
这应该可以解决问题。