yongyuanfan 发表于 2014-8-13 17:02:42

【教程】将自定义字段添加到搜索

这个功能本来是我自己需要的,DT自带的后台没有这个功能,在论坛找了一下,找了很久都没有找到解决方案,于是乎只有自己动手了。研究了DT的搜索部分的代码,发现要实现这个功能其实挺简单的。下面以sell模块举例讲解一下实现的步骤:
1.首先你得在后台新建一个自定义的字段,这里我自己新建的字段名为“bieming”。
2.打开module/sell/search.inc.php文件,用代码编辑器打开。
3.找到第37行:
$dfields = array('keyword', 'title', 'content', 'introduce', 'company', 'brand');
将你的自定义字段名安装他的格式添加到末尾:
$dfields = array('keyword', 'title', 'content', 'introduce', 'company', 'brand', 'bieming');
4.找到第86行:
if($keyword && $MOD['fulltext'] == 1) $condition .= " AND $dfields[$fields] LIKE '%$keyword%'";
将其改成:
if($keyword && $MOD['fulltext'] == 1) $condition .= " AND ($dfields[$fields] LIKE '%$keyword%' OR
$dfields
LIKE '%$keyword%')";
注意红色部分的$dfields 其中的数字6是第37行代码中“bieming”的索引(PS:程序都是以0开始计数的)
5.找到第94行:
if($keyword) $condition .= " AND $dfields[$fields] LIKE '%$keyword%'";
将其改成:
if($keyword) $condition .= " AND ($dfields[$fields] LIKE '%$keyword%' OR $dfields LIKE '%$keyword%')";
6.完成上面的步骤后,你就已经实现了自定义字段的搜索了。如果你还想像title字段一样增加搜索词高亮的话那么就找到121行。在121行下面新增加一行,其代码为:
if($kw) $r['bieming'] = str_replace($replacef, $replacet, $r['bieming']);
7.这样就实现了和DT一样的搜索功能了。希望这篇文章能帮到大家。

xianhepu 发表于 2016-12-28 17:04:56

多谢楼主,受益匪浅
static/image/smiley/default/smile.gif

zhao90 发表于 2016-12-28 17:22:14

收藏一下

枪口的雨 发表于 2016-12-28 17:47:24

感谢分享
页: [1]
查看完整版本: 【教程】将自定义字段添加到搜索