从1.4升级到1.5后,快速搜索会返回所有产品。高级搜索工作得很好。我已经清除了缓存并重新索引了所有内容,但仍然没有。有什么想法吗?
搜索也不会应用管理员中设置的最小查询长度(即,我可以输入任何内容并仍然显示所有内容)。在LIKE或FULLTEXT搜索之间切换似乎什么都不做。
我已经看到了这个Magento Search returns All Products,但我的所有插件都是最新的(我没有任何搜索插件)。
答案 0 :(得分:15)
我为此奋斗了好几天,事实证明 catalogsearch / layer 块最终会调用搜索引擎并将结果存储在catalogsearch_results表中。
搜索结果列表块只是对与product_id列(以及LIKE或FULLTEXT过滤器)上的 catalogsearch_results 表连接的产品集合的简单查询。
因此,简而言之,在您的一个布局XML文件(或您的local.xml)中,请确保您拥有以下代码:
<catalogsearch_result_index>
<reference name="left">
<block type="catalogsearch/layer" name="catalogsearch.leftnav" template="catalog/layer/view.phtml"/>
</reference>
</catalogsearch_result_index>
当然你可以将它放在任何其他块中(不仅仅是左),但要确保在 catalogsearch / result 块之前在句柄中的某处引用它(在XML中使用别名“search.result”。
如果您使用删除标记删除了图层导航,则必须为该块使用不同的名称(而不是“catalogsearch.leftnav”)。
如果您甚至需要在搜索结果页面中隐藏它,请将其保留在XML中,但使用CSS隐藏它:
.block-layered-nav {
display: none;
}
我希望这可以帮助其他一些受到这种设计模式憎恶折磨的可怜的灵魂。
答案 1 :(得分:7)
我通过编辑app / code / core / Mage / CatalogSearch / Block Result.php修复了问题
取消注释第149和150行
$this->getListBlock()
->setCollection($this->_getProductCollection());
并改变第172行:
$this->_productCollection = $this->getListBlock()->getLoadedProductCollection();
为:
$this->_productCollection = Mage::getSingleton('catalogsearch/layer')->getProductCollection();
答案 2 :(得分:2)
您使用的是带有分层搜索结果的2列布局吗... catalog / layer / view.phtml?我注意到当我切换到1列布局并删除分层导航时,结果会将所有不匹配结果的产品返回到我的搜索查询。
答案 3 :(得分:2)
请访问此链接
http://www.learnmagento.org/magento-bug-fixes/magento-search-showing-all-products/
如果您的Magento搜索正在索引搜索结果页面上的所有产品,并且搜索过滤器无法正常工作,那么这就是解决方案:
转到模板文件夹app/design/frontend/default/your-theme/
在这里,您将找到名为/ template /的文件夹。在其中的另一个文件夹将在那里,/catalogsearch/
只需将其重命名为/catalogsearch.bak/
现在转到app/design/frontend/base/template/catalogsearch/
。复制此文件夹并将其复制到app/design/frontend/default/your-theme/template/
同时从catalogsearch.xml
app/design/frontend/base/layout/ to app/design/frontend/default/default/layout/
答案 4 :(得分:0)
我今天遇到了这个问题,可能不是您问题的原因,但我的Aitoc Layered Navigation Pro Extension需要升级。
我可以看到分层导航显示正确的过滤器,但产品错误,只要我点击了一个过滤器就会自行修正。
Aitoc的问题在于,如果您在6个月前购买了扩展程序,则必须支付升级费用。
它很笨拙但是作为一个紧急的快速解决方案我只是调用了adj_nav_make_request();页面加载后刷新产品列表的javascript函数。
希望这有助于某人...