帝国CMS搜索页伪静态实现方法

今天我们重点来介绍帝国CMS搜索页url伪静态实现方法,这类操作可以帮助站长朋友实现帝国CMS站内搜索结果页的伪静态显示,在使用帝国CMS二次开发中非常具有实用价值,需要的朋友可以参考一下,多提宝贵意见,具体实现方法如下

打开\e\search\index.php 411行左右,找到:

1
Header("Location:result/?searchid=$searchid".$dogetvar);

将上面的代码修改为

1
Header("Location:$public_r[newsurl]search-0-$searchid.html".$dogetvar);

打开\e\search\result\index.php 20行左右,找到

1
2
//搜索结果
$searchid=(int)$_GET['searchid'];

在前面添加分页函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//增加分页函数
function page10($num,$line,$page_line,$start,$page,$search){
global $fun_r;
if($num<=$line)
{
return '';
}
$search=RepPostStr($search,1);
$url=$public_r['newsurl'].'search';
$snum=2;//最小页数
$totalpage=ceil($num/$line);//取得总页数
$firststr='<a title="'.$fun_r['trecord'].'">&nbsp;'.$num.'&nbsp;</a>&nbsp;&nbsp;';
//上一页
if($page<>0)
{
$toppage='<a href="'.$url.'-0-'.$search.'.html">'.$fun_r['startpage'].'</a>&nbsp;';
$pagepr=$page-1;
$prepage='<a href="'.$url.'-'.$pagepr.'-'.$search.'.html">'.$fun_r['pripage'].'</a>';
}
//下一页
if($page!=$totalpage-1)
{
$pagenex=$page+1;
$nextpage='&nbsp;<a href="'.$url.'-'.$pagenex.'-'.$search.'.html">'.$fun_r['nextpage'].'</a>';
$lastpage='&nbsp;<a href="'.$url.'-'.($totalpage-1).'-'.$search.'.html">'.$fun_r['lastpage'].'</a>';
}
$starti=$page-$snum<0?0:$page-$snum;
$no=0;
for($i=$starti;$i<$totalpage&&$no<$page_line;$i++)
{
$no++;
if($page==$i)
{
$is_1="<b>";
$is_2="</b>";
}
else
{
$is_1='<a href="'.$url.'-'.$i.'-'.$search.'.html">';
$is_2="</a>";
}
$pagenum=$i+1;
$returnstr.="&nbsp;".$is_1.$pagenum.$is_2;
}
$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
return $returnstr;
}

然后在48行左右找到

1
$listpage=page1($num,$line,$page_line,$start,$page,$search);

将上面的代码修改为

1
$listpage=page10($num,$line,$page_line,$start,$page,$search);

然后继续查找

1
$search="&searchid=".$searchid;

将上面的代码修改为

1
$search="$searchid";

添加伪静态规则,我们这里举得例子为Apache,大家自行修改为自己对应的伪静态规则

1
RewriteRule ^search-(.+?)-(.+?)\.html$ /e/search/result/index\.php\?page=$1&searchid=$2

如果是宝塔面板的话,需要在宝塔面板之中开启对伪静态的支持,很简单,宝塔面板中的网站设置-伪静态设置,如果选择左上角的帝国CMS伪静态设置,不过需要删除掉里面默认的伪静态规则,否则网站会打不开,然后将里面的伪静态规则改成,进针对搜索页进行伪静态设置。

1
2
3
RewriteEngine On
RewriteBase /
RewriteRule ^search-(.+?)-(.+?)\.html$ /e/search/result/index\.php\?page=$1&searchid=$2

修改搜索模板中的提交地址为绝对地址

1
<form action='http://www.XXXX.com/e/search/index.php' method="post" name="search_news" id="search_news">

然后说一下NGINX下的伪静态规则,今天为这事儿老费劲儿:

1
rewrite ^/search-(.+?)-(.+?)\.html$ /e/search/result/index.php?page=$1&searchid=$2 last;

最后说一下,iis的伪静态规则添加的时候,需要在服务器上安装相关的iis插件,这一点儿无论是虚拟主机还是服务器,都会有客服帮忙调整,甚至有些是默认添加好的,所以大家只需要在Web.Config中添加需要的伪静态规则就可以,从下面代码中挑选合适的代码复制到伪静态控制文件Web.Config中就可以。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="已导入的规则 2">
<match url="^c-0-(.*).html$" ignoreCase="false" />
<action type="Rewrite" url="/e/search/result/\?searchid={R:1}"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

设置好之后,大家可以刷新网站信息,查看网站代码调用是否生效。