资讯动态 news

网站建设|北京网站建设|网站建设公司|北京网站建设公司|北京智诚互联网站建设客服


解决dedecms搜索分类信息内容

发布于:2015-01-04 21:46 发布者:admin 浏览:1561 来自:北京网站建设
最近给客户做网站遇到了这个问题,记录下备忘,也给其他童鞋提供方便,资源共享才能进步。
在使用dedecms建设网站的时候有时候由于某种特殊需求会用到dedecms的分类信息、软件等模块,而且我们还需要通过dedecms自带的搜索系统来对分类信息、软件等内容进行检索,但是dedecms默认的搜索引擎不会搜索分类信息等其他模块内容,默认只搜索文章,这时我们需要对程序进行下修改,具体方法如下,我用的是dedecms5.7sp1 版本。

默认搜索修改方法

找到文件:arc.searchview.class.php (位置:/include/arc.searchview.class.php),修改如下内容:

1、用编辑器打开文件搜索:archives(@__archives)找到如下语句并修改:

第一处:$this->AddTable="#@__archives";

修改为:$this->AddTable="#@__addoninfos";

第二处:FROM `#@__archives` arc LEFT JOIN `#@__arctype` act ON arc.typeid=act.id

修改为:FROM `#@__addoninfos` arc LEFT JOIN `#@__arctype` act ON arc.typeid=act.id

共2处,根据程序版本的不同可能修改的语句略有差别,你可以把 archives 直接修改为 addoninfos

2、修改表字段:还是这个文件中搜索 arc.writer 找到如下语句:

$kwsqls[] = " CONCAT(arc.title,' ',arc.writer,' ',arc.keywords) LIKE '%$k%' ";

修改为:$kwsqls[] = " CONCAT(arc.title) LIKE '%$k%' ";

因为在分类信息表addoninfos中没有writer和keywords字段,所以在搜索过程中会出错,我们需要删掉检索这两个字段的语句。

3、搜索 sortrank 找到如下2处内容,修改:

第一处:

else if($orderby=="id")
{
$ordersql=" ORDER BY arc.id desc";
}
else
{
$ordersql=" ORDER BY arc.sortrank desc";
}

修改为:

else
{
$ordersql=" ORDER BY arc.id desc";
}

第二处:

else if($orderby=="id")
{
$ordersql="@id desc";
}
else
{
$ordersql="@sortrank desc";
}

修改为:

else
{
$ordersql="@id desc";
}

4、最后搜索 GetFileUrl 找到如下语句修改:

$row["arcurl"] = GetFileUrl($row["id"],$row["typeid"],$row["senddate"],$row["title"],

修改为:$row["arcurl"] = GetFileUrl($row["aid"],$row["typeid"],$row["senddate"],$row["title"],

因为 addonnifos 表里面没有id字段,只有aid字段,所以需要把 id 改完 aid,这里就一切搞定了,返回前台刷新页面,搜索一下,看看是不是可以检索到分类信息内容了。