帝国CMS搜索页支持灵动标签和万能标签

我们在使用帝国CMS仿站的时候,会遇到各种各样的问题,例如帝国CMS的搜索页不支持灵动标签和万能标签,这样有些仿站爱好者会感到无从下手,有时候互联网给出的教程不能够使用,我就因为大意抄错了代码,导致程序修改之后出现了问题,今天给大家解释一下避坑的事儿,互联网上的教程

打开 /e/search/result/index.php 文件,在文件顶部位置,就可以找到如下代码

1
2
3
4
5
require("../../class/connect.php");
require("../../class/db_sql.php");
require("../../data/dbcache/class.php");
require("../../class/q_functions.php");
require "../".LoadLang("pub/fun.php");

然后用下面的代码替换

1
2
3
4
5
6
require('../../class/connect.php');
require('../../class/db_sql.php');
require('../../class/functions.php');
require('../../class/t_functions.php');
require('../../data/dbcache/class.php');
require "../".LoadLang("pub/fun.php");

有些朋友会大意的,感觉只是多了一个函数调用而已,其实不然,真是的操作是将原来的

1
require("../../class/q_functions.php");

代码,用下面的代码

1
2
require('../../class/functions.php');
require('../../class/t_functions.php');

所以大家找代码替换的时候,一定要看仔细,不要粗略一看避免出现问题,然后向下查找

1
2
//替换公共模板变量
$listtemp=$tempr[temptext];

在这段代码的上面,添加如下代码

1
2
//页面支持标签
$tempr[temptext]=DtNewsBq('list'.$tempid,$tempr[temptext],0);

写到这里,基本上就替换完成了,调整好代码之后,保存上传到空间,刷新一下搜索页就可以看到实际效果,毕竟是动态浏览的问题,不需要后台更新。再补充一个问题,就是搜索页的关键词,帝国CMS在搜索页没有体现出来,所以我们可以适当的修改代码进行强化。

1
2
3
4
5
6
$searchid = $_GET['searchid'];
$search=$empire->fetch1("select keyboard from {$dbtbpre}enewssearch where searchid='$searchid' limit 1");
$keyboard = $search['keyboard'];
$title=str_replace($keyboard,"<font color='red'>$keyboard</font>",$r[title]);
$smalltext=str_replace($keyboard,"<font color='red'>$keyboard</font>",$r[smalltext]);
$listtemp='<li><span>[!--newstime--]</span><a href="[!--titleurl--]" target="_blank">'.$title.'</a></li>';

这段代码,需要添加在搜索页列表模板的(list.var) (*)代码之中,而且需要在右上角“使用程序代码”前面的复选框中打钩选中,这一点需要注意。另一个注意点儿是新学习到的知识,如果你在搜索页循环调用的列表模板中有自己的样式代码,需要把列表样式代码填写在最后一行代码中

1
$listtemp='样式代码';

中,也就是把自己的样式代码包裹在里面,搜索调用的时候会出现问题。另一种方法,就是在 /e/search/result/index.php中,查找

1
$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);

下面添加如下代码

1
2
//关键字加红(高亮)
$listtext=str_replace($search_r[keyboard],"<font color='red'>$search_r[keyboard]</font>",$listtext);

代码最后的格式

1
2
3
4
5
6
7
while($r=$empire->fetch($sql))
{
//替换列表变量
$repvar=ReplaceListVars($no,$listvar,$subnews,$subtitle,$formatdate,$url,$have_class,$r,$ret_r,$docode);
$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
//关键字加红(高亮)
$listtext=str_replace($search_r[keyboard],"<font color='red'>$search_r[keyboard]</font>",$listtext);

相对于第一种方法,第二种方法简单的很而且有效,建议大家使用第二种方法,好了,至于高亮的文字颜色,大家可以修改里面的颜色代码,就可以实现自己想要的搜索词颜色变化的问题。