谁能帮我解决这个问题?
我在 magento 上使用高级搜索,它运行良好,但是当我点击“搜索”而不输入任何搜索词时,它会给出错误或注释:“请指定至少一个搜索词。”
当我点击“搜索”而不输入任何搜索词时,我希望它显示所有类别的所有产品,这怎么可能?
先感谢您。非常感谢您的帮助 : ))
问候
PS我使用magento 1.5社区版
谁能帮我解决这个问题?
我在 magento 上使用高级搜索,它运行良好,但是当我点击“搜索”而不输入任何搜索词时,它会给出错误或注释:“请指定至少一个搜索词。”
当我点击“搜索”而不输入任何搜索词时,我希望它显示所有类别的所有产品,这怎么可能?
先感谢您。非常感谢您的帮助 : ))
问候
PS我使用magento 1.5社区版
这是一篇旧帖子,但由于我最近遇到了同样的问题,这就是我解决它的方法。拒绝您在没有任何参数的情况下进行搜索的代码位于文件中
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>
...
这应该够了吧。
在系统 -> 配置 -> 目录 -> 目录搜索下
将“最小查询长度”更改为 0 并再次尝试搜索。
我想指出,通配符搜索可能会非常费力,具体取决于您搜索的属性数量以及产品数量。这也可能取决于 LIKE 与 FULLTEXT。
至于第二个问题,这可以处理上面admin中同一个地方的分层导航。我会将“如果搜索结果小于则应用分层导航”的数量设置为等于您在主要可见性中拥有的产品数量。默认情况下,类别是分层导航的一部分。