如何在 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 以获得结果:
- iphone
- 尼康D300
或产品名称.
中出现这些词的所有产品
我对实时搜索(自动完成或自动建议或自动更正)不感兴趣。
我非常确定我想要进行的更改(通过使用 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
- 找到函数
getProducts()
- 在相关函数中找到如下代码块:
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) . "";
}
在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) . "";
}
希望对您有所帮助,干杯!
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 以获得结果:
- iphone
- 尼康D300
或产品名称.
中出现这些词的所有产品我对实时搜索(自动完成或自动建议或自动更正)不感兴趣。
我非常确定我想要进行的更改(通过使用 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
- 找到函数
getProducts()
- 在相关函数中找到如下代码块:
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) . "";
}
在
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) . "";
}
希望对您有所帮助,干杯!