gpt4 book ai didi

Magento:管理 - 产品搜索过滤器

转载 作者:行者123 更新时间:2023-12-02 15:53:36 34 4
gpt4 key购买 nike

我正在为一位拥有 Magento 商店的客户工作。里面塞满了产品,但这些产品的名称有点乱。他并没有坚持一种命名约定,而是多年来使用了不同的约定。因此,每当他使用“管理”->“管理产品”部分中的“名称”过滤器查找某些内容时,结果都不尽如人意。

所以我想知道是否有一种方法可以使过滤算法更加宽松一点,特别是在词序方面。因为如果您的产品名称类似于“word1 word2 word3”,并且您搜索“word1 word3”,则该产品不会出现在结果中。

任何提示将不胜感激。干杯!

8 月 28 日更新: 我的搜索引导我找到了 *Mage_Adminhtml_Block_Widget_Grid* 类,更准确地说,找到了它的 protected 方法 *_addColumnFilterToCollection()*。在这里你有 $cond 变量,如果你打印出来它会给你这样的东西:

Array ([like] => Zend_Db_Expr Object([_expression:protected] => '%search term%' ))

如果我可以在将搜索词提交到 *Zend_Db_Expr* 对象之前拦截该搜索词并将其放入“%search%term%”中,我可能会解决我的问题。那么,有什么想法吗?

最佳答案

这需要编写一个具有一定复杂性的自定义模块。

word1 word3 的过滤应该至少返回匹配的子集,而按 word1 word2 word3 的过滤确实会返回,这一期望是基于错误的假设Magento 确实执行 OR 搜索此网格过滤器。

事实并非如此。在这种情况下,Magento 不执行 OR,而是执行 LIKE 搜索。

这也解释了为什么 a 的结果集

LIKE name = '%word1 word2 word3%'

通常永远不会*可以匹配a的结果集

LIKE name = '%word1 word3%'

我认为 Mage_Adminhtml_Block_Catalog_Product_Grid::_prepareCollection() 将是您的代码需要覆盖的最低限度,以便您开始。

祝你好运!

<小时/>

* 当然,除了word2 == word3

关于Magento:管理 - 产品搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11969777/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com