如何在Opencart中将搜索查询从AND更改为OR?

时间:2017-04-12 09:32:33

标签: opencart

Opencart :v.1.5.6.4

当有人搜索" iphone nikon "在Opencart的搜索输入文本字段中,结果是:
" 没有符合搜索条件的产品。" (例如 - https://o-v156x.my-soul.net/index.php?route=product/search&search=iphone%20nikon

我想要实现的是将搜索查询从 AND 更改为 OR 以获得结果:

  • iphone
  • 尼康D300

或以产品名称出现这些字词的所有产品。

我对实时搜索不感兴趣(自动完成或自动建议或自动更正)。

我很确定我想要进行的更改(使用vQmod)位于文件/catalog/model/catalog/product.php内。
哪些代码需要更改?

2 个答案:

答案 0 :(得分:1)

修改

<强>目录/模型/目录/ product.php

  1. 找到函数getProducts()
  2. 在相关功能中找到以下代码块:
  3. foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; }

    if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; }

    并将代码块替换为:

    foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; }

    if ($implode) { $sql .= " " . implode(" OR ", $implode) . ""; }

    1. getTotalProducts()函数

      中找到以下代码

      foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; }

    2. if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; }

      并替换为以下

      foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; }

      if ($implode) { $sql .= " " . implode(" OR ", $implode) . ""; } 希望它有所帮助,CHEERS!

答案 1 :(得分:0)

在文件getProducts()中查找名为/catalog/model/catalog/product.php的函数。在此查找类似于以下行的内容,该行处理变量filter_name

if ($implode) {
  $sql .= " " . implode(" AND ", $implode) . "";
}

您必须在上述声明中将AND更改为OR,但请记住,如果您在核心中进行此更改,则对OpenCart的任何更新都会将此更改回更新。< / p>