帝国cms 搜索功能修改方便url传搜索关键字参数

帝国cms关键字搜索,无法通过url地址传关键字实现搜索,没办法那只能自己来改写了,这也方便后续后续伪静态实现SEO优化和方便通过网页链接传参。实现代码如下:

<?php 
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");
//require(ECMS_PATH . 'e/extend/cacheadmin/MakeCache.php');
$editor=1;
eCheckCloseMods('search');//关闭模块 
$link=db_connect();
$empire=new mysqlquery();

$page=(int)$_GET['page'];
$start=0;
$page_line=$public_r['search_pagenum'];//每页显示链接数 
$line=$public_r['search_num'];//每页显示记录数 
$offset=$page*$line;//总偏移量
$kwd=SearchDoKeyboardVar($_GET['kwd']);
$search="&kwd=".$kwd;

$add='';
//代码只实现了新闻系统数据表查询,通过更改查询表可以实现其他表模型查询
$num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news where locate ('{$kwd}' ,title) > 0");
$query="select * from {$dbtbpre}ecms_news where locate ('{$kwd}' ,title) > 0";
$query.=" order by newstime desc limit $offset,$line";
$sql=$empire->query($query);
$listpage=page1($num,$line,$page_line,$start,$page,$search);
//取得模板 
$tempr=$empire->fetch1("select temptext,subnews,listvar,rownum,showdate,modid,subtitle,docode from ".GetTemptb("enewssearchtemp")." where tempid=1 limit 1");

$have_class=1;//页面支持标签 
$tempr[temptext]=DtNewsBq('listsearch1',$tempr[temptext],0);//替换公共模板变量
$listtemp=$tempr[temptext];
if($public_r['searchtempvar']) { $listtemp=ReplaceTempvar($listtemp);
} 

$listtemp=str_replace("[!--show.page--]",$listpage,$listtemp);
$listtemp=str_replace("[!--keyboard--]",$kwd,$listtemp);
$listtemp=str_replace("[!--ecms.num--]",$num,$listtemp);
$url="<a href='".ReturnSiteIndexUrl()."'>".$fun_r['index']."</a>&nbsp;>&nbsp;".$fun_r['adsearch'];
$pagetitle=$fun_r['adsearch']." ".$kwd;
$listtemp=ReplaceSvars($listtemp,$url,0,$pagetitle,$pagetitle,$pagetitle,$add,0);
$rownum=$tempr[rownum];
if(empty($rownum)) { $rownum=1;
} 
$formatdate=$tempr[showdate];
$subnews=$tempr[subnews];
$subtitle=$tempr[subtitle];
$docode=$tempr[docode];
$modid=$tempr[modid];
$listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tempr[listvar]);
//字段 
$ret_r=ReturnReplaceListF($tempr[modid]);
//取得列表模板 
$list_exp="[!--empirenews.listtemp--]";
$list_r=explode($list_exp,$listtemp);
$listtext=$list_r[1];
$no=$offset+1;
$changerow=1;
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($kwd,"<font color='red'>$kwd</font>",$listtext);
$changerow+=1;
//超过行数 
if($changerow>$rownum) {
$changerow=1;
$string.=$listtext;
$listtext=$list_r[1];
} $no++;
} db_close();
$empire=null;
//多余数据 
if($changerow<=$rownum&&$listtext<>$list_r[1]) {
         $string.=$listtext;
} 
$string=$list_r[0].$string.$list_r[2];
echo stripSlashes($string);
//处理关键字
function SearchDoKeyboardVar($keyboard){
    $keyboard=str_replace('  ','',$keyboard);
    $keyboard=RepPostVar2(trim($keyboard));
    return $keyboard;
}
?>

修改后的查询效果:image.png

最新纠正其实是可以通过url地址传参的,参考官方文档http://www.phome.net/doc/manual/template/html/searchform.html

具体拼接url地址:/e/search/?searchget=1&keyboard=帝国&show=title

只能说自己也对帝国cms手册了解甚少。

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论