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 以获得结果:
或以产品名称出现这些字词的所有产品。
我对实时搜索不感兴趣(自动完成或自动建议或自动更正)。
我很确定我想要进行的更改(使用vQmod)位于文件/catalog/model/catalog/product.php
内。
哪些代码需要更改?
答案 0 :(得分:1)
修改强>
<强>目录/模型/目录/ 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) . "";
}
希望它有所帮助,CHEERS!
答案 1 :(得分:0)
在文件getProducts()
中查找名为/catalog/model/catalog/product.php
的函数。在此查找类似于以下行的内容,该行处理变量filter_name
if ($implode) {
$sql .= " " . implode(" AND ", $implode) . "";
}
您必须在上述声明中将AND
更改为OR
,但请记住,如果您在核心中进行此更改,则对OpenCart的任何更新都会将此更改回更新。< / p>