php - Magento admin catalog 以任何顺序从搜索词中搜索结果

标签 php mysql magento

我在 Magento 安装的管理区域中对目录搜索进行了扩展,以使搜索结果更好。

如果我有以下产品标题:“Logitech Wireless USB keyboard and mouse”并搜索“wireless mouse”,该产品会出现,但是,如果我搜索“usb mouse keyboard”,它不会出现,因为他们不' 按此顺序出现。我用于修改当前搜索的代码如下。

protected function _addColumnFilterToCollection($column){

    $cond = $column->getFilter()->getCondition();

    if ($column->getId() == "name" && isset($cond)) {

        $filterOrig = $cond['like'];
        $filterReplaced = str_replace(" ", "%", $filterOrig);
        $newZendDbExpr = new Zend_Db_Expr($filterReplaced);
        $modifCond = array('like'=>$newZendDbExpr);
        $this->getCollection()->addFieldToFilter($column->getId() , $modifCond);

    }elseif ($column->getId() == 'websites') {
        $this->getCollection()->joinField('websites',
        'catalog/product_website',
        'website_id',
        'product_id=entity_id',
        null,
        'left');
    }else{
        parent::_addColumnFilterToCollection($column);
    }

    return $this;

}

最佳答案

您应该遍历条件并为每个术语添加like。我会做这样的事情:

if ($column->getId() == "name" && isset($cond)) {

    $filtersOrig = explode(' ', $cond['like']);

    foreach ($filtersOrig as $filterOrig) {
        $filterReplaced = '%' . $filterOrig . '%';
        $newZendDbExpr = new Zend_Db_Expr($filterReplaced);
        $modifCond = array('like'=>$newZendDbExpr);
        $this->getCollection()->addAttributeToFilter($column->getId() , $modifCond);
    }

}

关于php - Magento admin catalog 以任何顺序从搜索词中搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36511385/

相关文章:

javascript - 在 PHP 中使用 Ajax 向数据库中插入数据

php - MySQL WHERE IN() 和 IN()

php - 大整数乘积差分算法

PHP、Memcached 从命令行运行,但不能从 Web 运行

PHP 多重查询问题

mysql - 如何使用命令行中的连接参数在 groovy 中连接 mysql 数据库?

php - 在 Mac OS X 中终止 PHP 进程

php - 什么会导致 print_r 和/或 var_dump 无法调试变量?

Magento 禁用产品显示 500 内部服务器错误

configuration - Magento 配置 - 使用 frontend_model 时填充字段