在使用Dedecms 5.6或5.7版本时,许多用户可能会对站内搜索功能感到失望。例如,在U盘量产网中,尽管我们已经对搜索结果进行了优化,使其按照标题匹配度显示,但当用户搜索“金士顿”这样的关键词时,仍会出现大量包含该关键字的文章,并且这些文章完全是按照最新发布时间进行排序的。这意味着最新发布的内容会优先展示在前面,然而最新发布的文章并不一定是用户真正需要的内容,这导致多页的搜索结果让用户难以选择。
为了解决这一问题,我们可以考虑按照点击量来排序搜索结果。通过这种方式,可以确保更受欢迎、更有价值的内容优先展示给用户。不过,在查找解决方案时,我们发现网上大多数教程都是针对Dedecms老版本的,对于新版本并不适用。例如,/include/inc_arcsaerch_view.php文件在新版本中已不存在,取而代之的是/include/arc.searchview.class.php文件。同时,代码$this->OrderBy = 'dede_full_search.aid desc';在新版本的arc.searchview.class.php文件中也找不到,因此无法按照网上的教程进行修改。
那么,如何解决这个问题呢?经过深入研究,我们发现在arc.searchview.class.php文件的第467行,“排序方式”注释下面存在一段控制搜索结果排序的代码。具体解决方法如下:
$ordersql = '';
if($this->ChannelType < 0 || $this->ChannelTypeid < 0){
if($orderby=="id"){
$ordersql="order by arc.aid desc";
}
else if($orderby=="senddate"){
$ordersql="order by arc.senddate desc";
}
else{
$ordersql=" order by arc.click desc";
}
}
else{
if($orderby=="senddate") {
$ordersql=" order by arc.senddate desc";
}
else if($orderby=="pubdate") {
$ordersql=" order by arc.pubdate desc";
}
else if($orderby=="id") {
$ordersql=" order by arc.id desc";
}
else {
$ordersql=" order by arc.click desc";
}
}
通过以上步骤,您可以轻松优化Dedecms CMS的搜索结果,从而大大提高用户体验。赶紧动手修改您的搜索代码吧!