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

How to change the search query from AND to OR in Opencart?

Opencart:v.1.5.6.4

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

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

产品名称.

中出现这些词的所有产品

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

我非常确定我想要进行的更改(通过使用 vQmod)在文件 /catalog/model/catalog/product.php.
中 具体哪里需要修改代码?

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

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

您必须将上述语句中的 AND 更改为 OR,但请记住,如果您在核心中进行此更改,则对 OpenCart 的任何更新都会将其更改回更新内容.

编辑

catalog/model/catalog/product.php

  1. 找到函数getProducts()
  2. 在相关函数中找到如下代码块:

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) . "%'"; }

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

并替换为以下内容

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

if ($implode) { $sql .= " " . implode(" OR ", $implode) . ""; } 希望对您有所帮助,干杯!