解决dedecms搜索分类信息内容
最近给客户做网站遇到了这个问题,记录下备忘,也给其他童鞋提供方便,资源共享才能进步。
在使用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,这里就一切搞定了,返回前台刷新页面,搜索一下,看看是不是可以检索到分类信息内容了。
在使用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,这里就一切搞定了,返回前台刷新页面,搜索一下,看看是不是可以检索到分类信息内容了。