
我们在使用帝国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) (*)代码之中,而且需要在右上角“使用程序代码”前面的复选框中打钩选中,这一点需要注意。另一个注意点儿是新学习到的知识,如果你在搜索页循环调用的列表模板中有自己的样式代码,需要把列表样式代码填写在最后一行代码中
中,也就是把自己的样式代码包裹在里面,搜索调用的时候会出现问题。另一种方法,就是在 /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);
|
相对于第一种方法,第二种方法简单的很而且有效,建议大家使用第二种方法,好了,至于高亮的文字颜色,大家可以修改里面的颜色代码,就可以实现自己想要的搜索词颜色变化的问题。