【问题标题】:How to make the search query more specific in Opencart? How to exclude keyword from product search in Opencart?如何在 Opencart 中使搜索查询更具体?如何从 Opencart 中的产品搜索中排除关键字?
【发布时间】:2020-01-03 12:18:02
【问题描述】:


我有一家多品类商店:https://www.gadgets-house.com
我销售的电池包括 AA 电池和 AAA 电池,它们的功能差别很大。
现在,问题是,每当我尝试搜索 AA 电池时,搜索结果也包括 AAA 电池。由于“AA 电池”与“AAA 电池关键字”相交,它向我展示了混合搜索。
谁能帮我只找到特定的关键字触发产品?或者有什么方法可以在特定产品列表中标记否定关键字?
Opencart 版本 2.3.0.2
谢谢。

【问题讨论】:

  • 嗨,杰西卡,这是一个有趣的问题。您可以在/catalog/controller/product/search.php 文件中查看搜索的工作原理。快速浏览显示它使用搜索短语作为过滤器,而不是尝试专门匹配关键字。您显然可以改变这种行为,但可能需要考虑其他情况的潜在后果。
  • 我也检查过,但对我没用。
  • 你检查了什么?你能分享一些你已经尝试过的代码吗?
  • @JessicaSmith 当时都没有工作。工作的个人。如果您对我的回答感到满意/请点赞并标记。这对我很重要。

标签: php search opencart opencart2.x opencart2.3


【解决方案1】:

是的,100% 可能:

几个月前我完成了任务,并在我的现场网站上进行了测试。

我现在有 2 个关键字

  1. AA鞋
  2. AAA 鞋

第 1 步:转到目录/模型/目录/product.php

找到

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

替换为

$implode[] = "pd.name ='" . $this->db->escape($word) . "'";

找到

$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";

替换为

$sql .= " OR pd.description  ='" . $this->db->escape($data['filter_name']) . "'";

第 2 步:转到 catalog/model/journal3/filter.php

找到

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

替换为

$implode[] = " pd.name = '" . $this->db->escape($word) . "'";

找到

$sql .= " OR pd.description LIKE '%" . $this->db->escape($filter_data['filter_name']) . "%'";

替换为

$sql .= " OR pd.description = '" . $this->db->escape($filter_data['filter_name']) . "'";

找到

$implode[] = "pd.tag LIKE '%" . $this->db->escape($word) . "%'";

替换为

$implode[] = "pd.tag = '" . $this->db->escape($word) . "'";

找到

$sql .= " pd.tag LIKE '%" . $this->db->escape($tag) . "%'";

替换为

$sql .= " pd.tag = '" . $this->db->escape($tag) . "'";

找到

$sql .= " OR pd.tag LIKE '%" . $this->db->escape($tag) . "%'";

替换为

$sql .= " OR pd.tag = '" . $this->db->escape($tag) . "'";

【讨论】:

  • 请检查我的答案@Jessica Smith。我在等你的回复。
  • 实施了您的建议。但没有运气。您可以在我的网站 www.gadgets-house.com 上查看 2 个关键字:AA 电池和 AAA 电池
  • 是的,它在我的网站上运行。你可以在这里看到inceptionsystem.com/bmc
  • 它也无法在您的网站上运行。当我搜索“aa 鞋”时,它同时显示 aa 鞋和 aaa 鞋。检查inceptionsystem.com/bmc/index.php?route=product/…
  • 是的,我很快会在搜索页面上更新。在我通知你之后
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
相关资源
最近更新 更多