帝国CMS自定义伪静态插件{SEO栏目优化利器}

帝国CMS自定义伪静态插件{SEO栏目优化利器}[支持7.0,7.2,  7.5]

实现栏目目录伪静态,比如news/china/69_1.html 是伪静态实现的,而不是生成静态的。纯绿色不影响帝国原有伪静态、静态和动态等功能设置。

1:栏目要选静态 不生成
2:内容页存放目录–栏目目录,内容页目录存放形式–不设置目录,(有利SEO,方便匹配栏目ID)
3:内容页文件命名形式 不能是目录,但是支持信息文件名的修改,URL也能很好看
4:栏目目录和信息文件名是英文或数字(栏目目录建议英文或英文开头,“-_”上下划线留着给别的东西用吧避免冲突如其它伪静态,避免冲突)
********为了通用只能遵守上述要求,有这些特殊需求自己改去*********

栏目设置截图演示:

伪静态规则:(测试apache没有问题)

#栏目
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(d/|e/|html/|images/|s/|search/|skin/|t/)
RewriteRule ^([0-9a-zA-Z/]+)/(|index\.html|index_[0-9]+\.html)$ /e/action/list\.php\?classid=$1&page=$2
#内容
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(d/|e/|html/|images/|s/|search/|skin/|t/)
RewriteRule ^([0-9a-zA-Z/]+)/([0-9a-zA-Z]+)([_0-9]*)\.html$ /e/action/show\.php\?classid=$1&id=$2&page=$3

Nginx伪静态规则:(网上收集未测试)

if (!-f $request_filename){
    set $rule_0 1$rule_0;
}
if ($request_uri !~ "^(/d/|/e/|/html/|/images/|/s/|/search/|/skin/|/t/|/ad/)"){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
    rewrite ^/([0-9a-zA-Z-/]+)/(|index.html|index_[0-9]+.html)$ /e/action/list.php?classid=$1&page=$2 last;
    rewrite ^/([0-9a-zA-Z-/]+)/([0-9a-zA-Z]+)([_0-9]*).html$ /e/action/show.php?classid=$1&id=$2&page=$3 last;
}
if (!-e $request_filename) {
    return 404;
}

 

在/e/action/下增加如下php文件:
列表list.php代码:

<?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');
$link = db_connect();
$empire = new mysqlquery();
$editor = 1;
$classid = RepPostStr($_GET['classid']); //MaXian:过滤获取
if (!is_numeric($classid)) {
foreach ($class_r as $val) {
foreach ($val as $val2) {
if ($classid == $val['classpath']) {
$classid = $val['classid'];
break;
}
}
}
}
if (empty($classid)) {
printerror("ErrorUrl", "history.go(-1)", 1);
}
$search = '&classid=' . $classid;
$tbname = $class_r[$classid]['tbname'];
$mid = $class_r[$classid]['modid'];
if (empty($tbname) || empty($mid) || InfoIsInTable($tbname)) {
printerror("ErrorUrl", "history.go(-1)", 1);
}
$cr = $empire->fetch1("select classid,classpagekey,intro,classimg,cgroupid,islist,classtempid,listdt,bdinfoid,repagenum,islast,infos,addsql,fclast from {$dbtbpre}enewsclass where classid='$classid'");
if (empty($cr['classid'])) {
printerror("ErrorUrl", "history.go(-1)", 1);
}
if ($class_r[$classid]['islast'] && $cr['bdinfoid']) {
printerror("ErrorUrl", "history.go(-1)", 1);
}
//moreport
if (Moreport_ReturnMustDt()) {
$class_r[$classid]['listdt'] = 1;
$cr['repagenum'] = 0;
$cr['listdt'] = 1;
}
//是否支持动态页
/*if(empty($class_r[$classid]['listdt'])&&!$cr['repagenum']){
$classurl=sys_ReturnBqClassname($cr, 9);
Header("Location:$classurl");
exit();
}*/
//权限
if ($cr['cgroupid']) {
$mgroupid = (int)getcvar('mlgroupid');
if (!strstr($cr['cgroupid'], ',' . $mgroupid . ',')) {
printerror('NotLevelToClass', 'history.go(-1)', 1);
}
}
//缓存
if ($public_r['ctimeopen']) {
$public_r['usetotalnum'] = 0;
}
$ecms_tofunr = array();
$ecms_tofunr['cacheuse'] = 0;
$ecms_tofunr['cacheselfcid'] = $classid;
$ecms_tofunr['cachepath'] = 'empirecms';
//缓存
$GLOBALS['navclassid'] = $classid;
$url = ReturnClassLink($classid);
$pagetitle = $class_r[$classid]['classname'];
$pagekey = $cr['classpagekey'];
$pagedes = $cr['intro'];
$classimg = $cr['classimg'] ? $cr['classimg'] : $public_r['newsurl'] . 'e/data/images/notimg.gif';
//---封面式---
if (!$class_r[$classid]['islast'] && $cr['islist'] != 1) {
/* if(empty($cr['listdt'])||$cr['islist'] == 3){
printerror("ErrorUrl", "history.go(-1)", 1);
}*/
//封面:缓存
$ecms_tofunr['cachetype'] = 'classpage';
$ecms_tofunr['cacheids'] = $classid;
$ecms_tofunr['cachedatepath'] = 'cpage';
$ecms_tofunr['cachetime'] = $public_r['ctimeclass'];
$ecms_tofunr['cachelasttime'] = $public_r['ctimelast'];
$ecms_tofunr['cachelastedit'] = $cr['fclast'];
$ecms_tofunr['cacheopen'] = Ecms_eCacheCheckOpen($ecms_tofunr['cachetime']);
if ($ecms_tofunr['cacheopen'] == 1) {
$ecms_tofunr['cacheuse'] = Ecms_eCacheOut($ecms_tofunr, 0);
}
//封面:缓存
if ($cr['islist'] == 2) {
$classtemp = GetClassText($classid);
$dttempname = 'classpage' . $classid;
} else {
if (empty($cr['classtempid'])) {
printerror('ErrorUrl', '', 1);
}
$classtemp = GetClassTemp($cr['classtempid']);
$dttempname = 'classtemp' . $cr['classtempid'];
}
$string = DtNewsBq($dttempname, $classtemp, 0);
$string = str_replace('[!--newsnav--]', $url, $string); //位置导航
$string = Class_ReplaceSvars($string, $url, $classid, $pagetitle, $pagekey, $pagedes, $classimg, $addr, 0);
$string = str_replace('[!--page.stats--]', '', $string);
//封面:缓存
if ($ecms_tofunr['cacheopen'] == 1) {
Ecms_eCacheIn($ecms_tofunr, stripSlashes($string));
} else {
echo stripSlashes($string);
}
//封面:缓存
exit();
}
//---列表式---
$add = '';
//栏目
if ($class_r[$classid]['islast']) { //终极栏目
$add.= "classid='$classid'";
$have_class = 0;
} else {
$add.= ReturnClass($class_r[$classid]['sonclass']);
$have_class = 1;
}
if ($cr['addsql']) {
$add.= ' and (' . $cr['addsql'] . ')';
}
//排序
if (empty($class_r[$classid]['reorder'])) {
$addorder = "newstime desc";
} else {
$addorder = $class_r[$classid]['reorder'];
}
//列表模板
$tempid = $class_r[$classid]['dtlisttempid'] ? $class_r[$classid]['dtlisttempid'] : $class_r[$classid]['listtempid'];
if (empty($tempid)) {
printerror('ErrorUrl', '', 1);
}
$tempr = $empire->fetch1("select tempid,temptext,subnews,listvar,rownum,showdate,modid,subtitle,docode from " . GetTemptb("enewslisttemp") . " where tempid='$tempid'");
if (empty($tempr['tempid'])) {
printerror('ErrorUrl', '', 1);
}
$PageUrl = $_SERVER['HTTP_X_REWRITE_URL'] ? $_SERVER['HTTP_X_REWRITE_URL'] : $_SERVER['REQUEST_URI'];
$page = (int)substr($_GET['page'], 6); // MaXian:分页获取
if ($page == 1 || strpos($PageUrl, '_0') > 0) { // MaXian:判断分页是1或者0就跳转 404
header('HTTP/1.1 404 Not Found');
header('status: 404 Not Found');
printerror('ErrorUrl', 'history.go(-1)', 1);
}
$page = RepPIntvar($page) ? RepPIntvar($page) : 1;
$start = 0;
$line = $class_r[$classid]['lencord']; //每页显示记录数
$page_line = 10; //每页显示链接数
$offset = $page * $line - $line; //总偏移量
//列表:缓存
$ecms_tofunr['cachetype'] = 'classlist';
$ecms_tofunr['cacheids'] = $classid . ',' . $page;
$ecms_tofunr['cachedatepath'] = 'clist/' . $classid;
$ecms_tofunr['cachetime'] = $public_r['ctimelist'];
$ecms_tofunr['cachelasttime'] = $public_r['ctimelast'];
$ecms_tofunr['cachelastedit'] = $cr['fclast'];
$ecms_tofunr['cacheopen'] = Ecms_eCacheCheckOpen($ecms_tofunr['cachetime']);
if ($ecms_tofunr['cacheopen'] == 1) {
$ecms_tofunr['cacheuse'] = Ecms_eCacheOut($ecms_tofunr, 0);
}
//列表:缓存
//系统模型
$ret_r = ReturnReplaceListF($mid);
//优化
$yhadd = '';
$yhid = $class_r[$classid]['yhid'];
$yhvar = 'qlist';
if ($yhid) {
$yhadd = ReturnYhSql($yhid, $yhvar, 1);
}
//总数
$totalnum = (int)$_GET['totalnum'];
if (!$public_r['usetotalnum']) {
$totalnum = 0;
}
if ($totalnum < 1) {
if ($yhadd || $cr['addsql']) {
$totalquery = "select count(*) as total from {$dbtbpre}ecms_" . $tbname . " where " . $yhadd . $add;
$num = $empire->gettotal($totalquery);
} else {
$num = ReturnClassInfoNum($cr, 0);
}
} else {
$num = $totalnum;
}
if ($public_r['usetotalnum']) {
$search.= '&totalnum=' . $num;
}
//checkpageno
MX_eCheckListPageNo($page - 1, $line, $num); // MaXian:验证页码是否有效
function MX_eCheckListPageNo($page, $line, $totalnum) { // MaXian:验证页码是否有效
$page = (int)$page;
$line = (int)$line;
$totalnum = (int)$totalnum;
if (!$page || !$line) {
return '';
}
$totalpage = ceil($totalnum / $line);
if ($page >= $totalpage) { // MaXian:分页不合法跳转404
header('HTTP/1.1 404 Not Found');
header('status: 404 Not Found');
printerror('ErrorUrl', 'history.go(-1)', 1);
}
}
$query = "select " . ReturnSqlListF($mid) . " from {$dbtbpre}ecms_" . $tbname . " where " . $yhadd . $add;
$query.= " order by " . ReturnSetTopSql('list') . $addorder . " limit $offset,$line";
$sql = $empire->query($query);
//伪静态
$pagefunr = eReturnRewriteClassUrl($classid, 0);
$pagefunr['repagenum'] = $cr['repagenum'];
$pagefunr['dolink'] = empty($class_r[$classid]['classurl']) ? $public_r['newsurl'] . $class_r[$classid]['classpath'] . '/' : $class_r[$classid]['classurl'] . '/';
$pagefunr['dofile'] = 'index';
$pagefunr['dotype'] = $class_r[$classid]['classtype'];
//分页
/*if($pagefunr['rewrite']==1||$pagefunr['repagenum']){
$listpage=InfoUsePage($num,$line,$page_line,$start,$page,$search,$pagefunr);
}else{
$listpage=page1($num,$line,$page_line,$start,$page,$search);
}*/
$listpage = MX_ListPage($num, $line, $page_line, $start, $page); // MaXian:自己加的分页
function MX_ListPage($num, $line, $page_line, $start, $page) { // MaXian:分页函数
global $fun_r;
if ($num <= $line) {
return '';
}
$f = '_'; //伪静态分页分割符号
$url = preg_replace('/_[0-9]+/', '', $_SERVER['HTTP_X_REWRITE_URL'] ? $_SERVER['HTTP_X_REWRITE_URL'] : $_SERVER['REQUEST_URI']);
if (!strripos($url, '.')) {
$url = $url . 'index.html';
}
$urlarr = explode('.', $url);
$snum = 3; //最小页数
$totalpage = ceil($num / $line); //取得总页数
$firststr = '<a title="' . $fun_r['trecord'] . '">&nbsp;<b>' . $num . '</b> </a>&nbsp;&nbsp;';
//上一页
if ($page > 1) {
$toppage = '<a href="' . substr($urlarr[0], 0, -5) . '">' . $fun_r['startpage'] . '</a>';
$pagepr = $page - 1;
if ($pagepr == 1) {
$prepage = '<a href="' . substr($urlarr[0], 0, -5) . '">' . $fun_r['pripage'] . '</a>';
} else {
$prepage = '<a href="' . $urlarr[0] . $f . $pagepr . '.' . $urlarr[1] . '">' . $fun_r['pripage'] . '</a>';
}
}
//下一页
if ($page != $totalpage) {
$pagenex = $page + 1;
$nextpage = '<a href="' . $urlarr[0] . $f . $pagenex . '.' . $urlarr[1] . '">' . $fun_r['nextpage'] . '</a>';
$lastpage = '<a href="' . $urlarr[0] . $f . $totalpage . '.' . $urlarr[1] . '">' . $fun_r['lastpage'] . '</a>';
}
$starti = $page - $snum < 0 ? 0 : $page - $snum;
$no = 0;
for ($i = $starti + 1;$i < $totalpage + 1 && $no < $page_line;$i++) {
$no++;
if ($page == $i) {
$is_1 = "<b>";
$is_2 = "</b>";
} else {
if ($i == 1) { //第一页不加page0
$is_1 = '<a href="' . substr($urlarr[0], 0, -5) . '">';
$is_2 = "</a>";
} else {
$is_1 = '<a href="' . $urlarr[0] . $f . $i . '.' . $urlarr[1] . '">';
$is_2 = "</a>";
}
}
$pagenum = $i;
$returnstr.= $is_1 . $pagenum . $is_2;
}
$returnstr = $firststr . $toppage . $prepage . $returnstr . $nextpage . $lastpage;
return $returnstr;
}
//页面支持标签
if ($public_r['dtcanbq']) {
$tempr['temptext'] = DtNewsBq('list' . $tempid, $tempr['temptext'], 0);
} else {
if ($public_r['searchtempvar']) {
$tempr['temptext'] = ReplaceTempvar($tempr['temptext']);
}
}
$listtemp = $tempr['temptext'];
$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']);
//公共
$listtemp = str_replace('[!--newsnav--]', $url, $listtemp); //位置导航
$listtemp = Class_ReplaceSvars($listtemp, $url, $classid, $pagetitle, $pagekey, $pagedes, $classimg, $addr, 0);
$listtemp = str_replace('[!--page.stats--]', '', $listtemp);
$listtemp = str_replace('[!--show.page--]', $listpage, $listtemp);
$listtemp = str_replace('[!--show.listpage--]', $listpage, $listtemp);
$listtemp = str_replace('[!--list.pageno--]', $page + 1, $listtemp);
//取得列表模板
$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);
$changerow+= 1;
//超过行数
if ($changerow > $rownum) {
$changerow = 1;
$string.= $listtext;
$listtext = $list_r[1];
}
$no++;
}
//多余数据
if ($changerow <= $rownum && $listtext <> $list_r[1]) {
$string.= $listtext;
}
$string = $list_r[0] . $string . $list_r[2];
//列表:缓存
if ($ecms_tofunr['cacheopen'] == 1) {
Ecms_eCacheIn($ecms_tofunr, stripSlashes($string));
} else {
echo stripSlashes($string);
}
//列表:缓存
db_close();
$empire = null;
?>

内容show.php代码:

<?php
require ('../class/connect.php');
require ('../class/db_sql.php');
require ('../class/functions.php');
require ('../class/t_functions.php');
require LoadLang('pub/fun.php');
require ('../data/dbcache/class.php');
require ('../data/dbcache/MemberLevel.php');
$link = db_connect();
$empire = new mysqlquery();
$classid = RepPostStr($_GET['classid']); //修改过滤方式
$id = RepPostStr($_GET['id']); //修改过滤方式
if (!is_numeric($classid)) {
    foreach ($class_r as $val) {
        foreach ($val as $val2) {
            if ($classid == $val['classpath']) {
                $classid = $val['classid'];
                break;
            }
        }
    }
}
//获取真实信息id
if (is_numeric($id) && !$class_r[$classid]['filename']) {
    $where = "classid='$classid' and id='$id'";
} else {
    $where = "classid='$classid' and filename='$id'";
}
$PageUrl = $_SERVER['HTTP_X_REWRITE_URL'] ? $_SERVER['HTTP_X_REWRITE_URL'] : $_SERVER['REQUEST_URI'];
$page = (int)substr($_GET['page'], 1); //page是带横线所以去掉
if ($page == 1 || strpos($PageUrl, '_0') > 0) { // MaXian:判断分页是1或者0就跳转 404
    header('HTTP/1.1 404 Not Found');
    header('status: 404 Not Found');
    printerror('ErrorUrl', 'history.go(-1)', 1);
}
$page = RepPIntvar($page) ? RepPIntvar($page) : 1;
$mid = $class_r[$classid]['modid'];
$tbname = $class_r[$classid]['tbname'];
//验证IP
eCheckAccessDoIp('showinfo');
if (!$classid || !$id || !$mid || !$tbname || InfoIsInTable($tbname)) {
    printerror('此信息不存在', '', 1, 0, 1);
}
$r = $empire->fetch1("select * from {$dbtbpre}ecms_" . $tbname . " where $where limit 1");
if (!$r['id'] || $classid != $r['classid']) {
    printerror('此信息不存在', '', 1, 0, 1);
}
$id = $r['id']; //ID重新赋值
//外部链接
if ($r['isurl']) {
    $titleurl = $r['titleurl'];
    Header("Location:$titleurl");
    exit();
}
//moreport
if (Moreport_ReturnMustDt()) {
    $class_r[$classid]['showdt'] = 2;
}
//是否支持动态内容页
/*if($class_r[$classid]['showdt']!=2){
    $titleurl = sys_ReturnBqTitleLink($r);
    Header("Location:$titleurl");
    exit();
}*/
//缓存
if ($public_r['ctimeopen']) {
    $public_r['usetotalnum'] = 0;
}
$ecms_tofunr = array();
$ecms_tofunr['cacheuse'] = 0;
$ecms_tofunr['cacheselfcid'] = $classid;
$ecms_tofunr['cachetype'] = 'textpage';
$ecms_tofunr['cacheids'] = $classid . ',' . $id . ',' . $page;
$ecms_tofunr['cachepath'] = 'empirecms';
$ecms_tofunr['cachedatepath'] = 'ctext/' . date('Y/md', $r['truetime']);
$ecms_tofunr['cachetime'] = $public_r['ctimetext'];
$ecms_tofunr['cachelasttime'] = $public_r['ctimelast'];
$ecms_tofunr['cachelastedit'] = $r['lastdotime'];
$ecms_tofunr['cacheopen'] = Ecms_eCacheCheckOpen($ecms_tofunr['cachetime']);
$ecms_tofunr['cachehavedo'] = 0;
if ($ecms_tofunr['cacheopen'] == 1 && !($r['groupid'] || $class_r[$classid]['cgtoinfo'])) {
    $ecms_tofunr['cacheuse'] = Ecms_eCacheOut($ecms_tofunr, 2);
    if ($ecms_tofunr['cacheuse']) {
        //更新点击
        $empire->query("update {$dbtbpre}ecms_" . $tbname . " set onclick=onclick+1 where id='$id' limit 1");
        db_close();
        $empire = null;
        exit();
    }
    $ecms_tofunr['cachehavedo'] = 1;
}
//缓存
//副表
$finfor = $empire->fetch1("select " . ReturnSqlFtextF($mid) . " from {$dbtbpre}ecms_" . $tbname . "_data_" . $r['stb'] . " where id='$r[id]' limit 1");
$r = array_merge($r, $finfor);
//权限
if ($r['groupid'] || $class_r[$classid]['cgtoinfo']) {
    define('empirecms', 'wm_chief');
    define('PageCheckLevel', 'wm_chief');
    $check_tbname = $tbname;
    $check_infoid = $id;
    $check_classid = $classid;
    $check_path = "../../";
    $checkinfor = $r;
    @include ("../class/CheckLevel.php");
}
//缓存
if ($ecms_tofunr['cacheopen'] == 1 && !$ecms_tofunr['cachehavedo']) {
    $ecms_tofunr['cacheuse'] = Ecms_eCacheOut($ecms_tofunr, 2);
    if ($ecms_tofunr['cacheuse']) {
        //更新点击
        $empire->query("update {$dbtbpre}ecms_" . $tbname . " set onclick=onclick+1 where id='$id' limit 1");
        db_close();
        $empire = null;
        exit();
    }
}
//缓存
//存文本
if ($emod_r[$mid]['savetxtf']) {
    $stf = $emod_r[$mid]['savetxtf'];
    if ($r[$stf]) {
        $r[$stf] = GetTxtFieldText($r[$stf]);
    }
}
//初始值
$search = "&classid=$classid&id=$id";
$line = 1;
$start = 0;
$page_line = 6; //每页显示链接数
$offset = $page * $line - $line; //总偏移量
$GLOBALS['navclassid'] = $r['classid'];
$GLOBALS['navinfor'] = $r;
//取得内容模板
$r['newstempid'] = $r['newstempid'] ? $r['newstempid'] : $class_r[$r['classid']]['newstempid'];
$newstemp_r = $empire->fetch1("select tempid,temptext,showdate from " . GetTemptb("enewsnewstemp") . " where tempid='$r[newstempid]'");
function MX_eCheckListPageNo($page, $line, $totalnum) { // MaXian:验证页码是否有效
    $page = (int)$page;
    $line = (int)$line;
    $totalnum = (int)$totalnum;
    if (!$page || !$line) {
        return '';
    }
    $totalpage = ceil($totalnum / $line);
    if ($page >= $totalpage) { // MaXian:分页不合法跳转404
        header('HTTP/1.1 404 Not Found');
        header('status: 404 Not Found');
        printerror('ErrorUrl', 'history.go(-1)', 1);
    }
}
function MX_ShowPage($num, $line, $page_line, $start, $page) { // MaXian:分页函数
    global $fun_r;
    if ($num <= $line) {
        return '';
    }
    $f = '_'; //伪静态分页分割符号
    $url = preg_replace('/_[0-9]+/', '', $_SERVER['HTTP_X_REWRITE_URL'] ? $_SERVER['HTTP_X_REWRITE_URL'] : $_SERVER['REQUEST_URI']);
    $urlarr = explode('.', $url);
    $snum = 3; //最小页数
    $totalpage = ceil($num / $line); //取得总页数
    $firststr = '<a title="' . $fun_r['trecord'] . '">总' . $totalpage . '页</a>';
    //上一页
    if ($page > 1) {
        $toppage = '<a href="' . $url . '">' . $fun_r['startpage'] . '</a>';
        $pagepr = $page - 1;
        if ($pagepr == 1) {
            $prepage = '<a href="' . $url . '">' . $fun_r['pripage'] . '</a>';
        } else {
            $prepage = '<a href="' . $urlarr[0] . $f . $pagepr . '.' . $urlarr[1] . '">' . $fun_r['pripage'] . '</a>';
        }
    }
    //下一页
    if ($page != $totalpage) {
        $pagenex = $page + 1;
        $nextpage = '<a href="' . $urlarr[0] . $f . $pagenex . '.' . $urlarr[1] . '">' . $fun_r['nextpage'] . '</a>';
        $lastpage = '<a href="' . $urlarr[0] . $f . ($totalpage) . '.' . $urlarr[1] . '">' . $fun_r['lastpage'] . '</a>';
    }
    $starti = $page - $snum < 0 ? 0 : $page - $snum;
    $no = 0;
    for ($i = $starti + 1;$i < $totalpage + 1 && $no < $page_line;$i++) {
        $no++;
        if ($page == $i) {
            $is_1 = "<b>";
            $is_2 = "</b>";
        } else {
            if ($i == 1) { //第一页不加page0
                $is_1 = '<a href="' . $url . '">';
                $is_2 = "</a>";
            } else {
                $is_1 = '<a href="' . $urlarr[0] . $f . $i . '.' . $urlarr[1] . '">';
                $is_2 = "</a>";
            }
        }
        $pagenum = $i;
        $returnstr.= $is_1 . $pagenum . $is_2;
    }
    $returnstr = $firststr . $toppage . $prepage . $returnstr . $nextpage . $lastpage;
    return $returnstr;
}
//替换模板变量
function DtGetHtml($add, $newstemp_r, $mid, $tbname, $line, $page_line, $start, $page, $search) {
    global $public_r, $class_r, $class_zr, $class_tr, $fun_r, $empire, $dbtbpre, $emod_r, $level_r;
    //更新点击
    $empire->query("update {$dbtbpre}ecms_" . $tbname . " set onclick=onclick+1 where id='$add[id]' limit 1");
    $add['onclick'] = $add['onclick'] + 1;
    //模板参数
    $newstemptext = $newstemp_r['temptext'];
    $formatdate = $newstemp_r['showdate'];
    //页面
    $pagetitle = ehtmlspecialchars($add['title']);
    $url = ReturnClassLink($add['classid']); //导航
    $newstemptext = DtInfo_ReplaceSvars($newstemptext, $url, $add['classid'], $pagetitle, $add['keyboard'], $pagetitle);
    //相关信息
    if (strstr($newstemptext, '[!--other.link--]')) {
        $keyboardtext = GetKeyboard($add['keyboard'], $add['keyid'], $add['classid'], $add['id'], $class_r[$add['classid']]['link_num']);
    }
    //分页字段
    $ptitle = $add['title'];
    $truepage = '';
    $titleselect = '';
    $expage = '[!--empirenews.page--]'; //分页符
    $pf = $emod_r[$mid]['pagef'];
    if ($pf && strstr($add[$pf], $expage)) { //有分页
        $n_r = explode($expage, $add[$pf]);
        $thispagenum = count($n_r);
        //checkpageno
        MX_eCheckListPageNo($page - 1, $line, $thispagenum); // MaXian:验证页码是否有效
        if ($page < 0 || $page > $thispagenum) {
            $page = 1;
        }
        $add[$pf] = $n_r[$page - 1];
        if ($page) {
            $ti_r = explode('[/!--empirenews.page--]', $n_r[$page]);
            if (count($ti_r) >= 2) {
                $ptitle = $ti_r[0];
                $add[$pf] = $ti_r[1];
            } else {
                $ptitle = $add['title'] . '(' . ($page - 1) . ')';
            }
        }
        //伪静态
        $pagefunr = eReturnRewriteInfoUrl($add['classid'], $add['id'], 0);
        $pagefunr['repagenum'] = 0;
        $truepage = MX_ShowPage($thispagenum, $line, $page_line, $start, $page); //伪静态分页
        //伪静态分页结束
        //$truepage=InfoUsePage($thispagenum,$line,$page_line,$start,$page,$search,$pagefunr);
        //下拉式分页
        if (strstr($newstemptext, '[!--title.select--]')) {
            for ($j = 0;$j < $thispagenum;$j++) {
                $spurl = eReturnRewritePageLink($pagefunr, $j);
                if ($j == 0) {
                    $sptitle = $add['title'];
                } else {
                    $ti_r = explode('[/!--empirenews.page--]', $n_r[$j]);
                    $sptitle = count($ti_r) >= 2 ? $ti_r[0] : $add['title'] . '(' . ($j + 1) . ')';
                }
                $select = '';
                if ($page == $j) {
                    $ptitle = $sptitle;
                    $select = ' selected';
                }
                $titleselect.= '<option value="' . $spurl . '"' . $select . '>' . $sptitle . '</option>';
            }
            $titleselect = '<select name="titleselect" onchange="self.location.href=this.options[this.selectedIndex].value">' . $titleselect . '</select>';
        }
        //下一页链接
        if ($page == $thispagenum - 1) {
            $thisnextlink = eReturnRewritePageLink($pagefunr, 0);
        } else {
            $thisnextlink = eReturnRewritePageLink($pagefunr, $page + 1);
        }
    } else {
        //checkpageno
        /*        if($page!=0){
            printerror('ErrorUrl','history.go(-1)',1);
        }*/
    }
    //返回替换验证字符
    $docheckrep = ReturnCheckDoRepStr();
    if ($add['newstext']) {
        if (empty($public_r['dorepword']) && $docheckrep[3]) {
            $add['newstext'] = ReplaceWord($add['newstext']); //过滤字符
            
        }
        if (empty($public_r['dorepkey']) && $docheckrep[4] && !empty($add['dokey'])) { //替换关键字
            $add['newstext'] = ReplaceKey($add['newstext'], $add['classid']);
        }
        if ($public_r['opencopytext']) {
            $add['newstext'] = AddNotCopyRndStr($add['newstext']); //随机复制字符
            
        }
    }
    //变量
    $tempf = $emod_r[$mid]['tempf'];
    $fr = explode(',', $tempf);
    $fcount = count($fr) - 1;
    //变量替换
    $newstempstr = $newstemptext; //模板
    for ($i = 1;$i < $fcount;$i++) {
        $f = $fr[$i];
        $value = $add[$f];
        if ($f == 'downpath') { //下载地址
            if (strstr($newstemptext, '[!--downpath--]')) {
                $value = ReturnDownSoftHtml($add);
            }
        } elseif ($f == 'onlinepath') { //观看地址
            if (strstr($newstemptext, '[!--onlinepath--]')) {
                $value = ReturnOnlinepathHtml($add);
            }
        } elseif ($f == 'morepic') { //图片集
            if (strstr($newstemptext, '[!--morepic--]')) {
                $value = ReturnMorepicpathHtml($add);
            }
        } elseif ($f == 'newstime') { //时间
            if (strstr($newstemptext, '[!--newstime--]')) {
                $value = date($formatdate, $value);
            }
        } elseif ($f == 'befrom') { //信息来源
            if ($docheckrep[1] && strstr($newstemptext, '[!--befrom--]')) {
                $value = ReplaceBefrom($value);
            }
        } elseif ($f == 'writer') { //作者
            if ($docheckrep[2] && strstr($newstemptext, '[!--writer--]')) {
                $value = ReplaceWriter($value);
            }
        } elseif ($f == 'titlepic') { //标题图片
            if (empty($value)) {
                $value = $public_r['newsurl'] . 'e/data/images/notimg.gif';
            }
        } elseif ($f == 'title') { //标题
            
        } else { //正常字段
            if (!strstr($emod_r[$mid]['editorf'], ',' . $f . ',')) {
                if (strstr($emod_r[$mid]['tobrf'], ',' . $f . ',')) { //加br
                    $value = nl2br($value);
                }
                if (!strstr($emod_r[$mid]['dohtmlf'], ',' . $f . ',')) { //去除html
                    $value = RepFieldtextNbsp(ehtmlspecialchars($value));
                }
            }
        }
        $newstempstr = str_replace('[!--' . $f . '--]', $value, $newstempstr);
    }
    //固定变量
    $newstempstr = str_replace('[!--id--]', $add['id'], $newstempstr);
    $newstempstr = str_replace('[!--classid--]', $add['classid'], $newstempstr);
    $newstempstr = str_replace('[!--class.name--]', $class_r[$add['classid']]['classname'], $newstempstr);
    $newstempstr = str_replace('[!--ttid--]', $add['ttid'], $newstempstr);
    $newstempstr = str_replace('[!--tt.name--]', $class_tr[$add['ttid']]['tname'], $newstempstr);
    $newstempstr = str_replace('[!--tt.url--]', sys_ReturnBqInfoTypeUrl($add['ttid']), $newstempstr);
    $newstempstr = str_replace('[!--onclick--]', $add['onclick'], $newstempstr);
    $newstempstr = str_replace('[!--userfen--]', $add['userfen'], $newstempstr);
    $newstempstr = str_replace('[!--username--]', $add['username'], $newstempstr);
    //带链接的用户名
    if ($add['ismember'] == 1 && $add['userid']) {
        $newstempstr = str_replace('[!--linkusername--]', "<a href='" . $public_r['newsurl'] . "e/space/?userid=" . $add['userid'] . "' target=_blank>" . $add['username'] . "</a>", $newstempstr);
    } else {
        $newstempstr = str_replace('[!--linkusername--]', $add['username'], $newstempstr);
    }
    $newstempstr = str_replace('[!--userid--]', $add['userid'], $newstempstr);
    $newstempstr = str_replace('[!--other.link--]', $keyboardtext, $newstempstr);
    $newstempstr = str_replace('[!--news.url--]', $public_r['newsurl'], $newstempstr);
    $newstempstr = str_replace('[!--plnum--]', $add['plnum'], $newstempstr);
    $newstempstr = str_replace('[!--totaldown--]', $add['totaldown'], $newstempstr);
    $newstempstr = str_replace('[!--keyboard--]', $add['keyboard'], $newstempstr);
    //链接
    $titleurl = sys_ReturnBqTitleLink($add);
    $newstempstr = str_replace('[!--titleurl--]', $titleurl, $newstempstr);
    $newstempstr = str_replace('[!--page.stats--]', '', $newstempstr);
    $classurl = sys_ReturnBqClassname($add, 9);
    $newstempstr = str_replace('[!--class.url--]', $classurl, $newstempstr);
    //下一篇
    if (strstr($newstemptext, '[!--info.next--]')) {
        $next_r = $empire->fetch1("select isurl,titleurl,classid,id,title from {$dbtbpre}ecms_" . $class_r[$add['classid']]['tbname'] . " where id>$add[id] and classid='$add[classid]' order by id limit 1");
        if (empty($next_r['id'])) {
            $infonext = "<a href='" . $classurl . "'>" . $fun_r['HaveNoNextLink'] . "</a>";
        } else {
            //链接
            $nexttitleurl = sys_ReturnBqTitleLink($next_r);
            $infonext = "<a href='" . $nexttitleurl . "'>" . $next_r['title'] . "</a>";
        }
        $newstempstr = str_replace('[!--info.next--]', $infonext, $newstempstr);
    }
    //上一篇
    if (strstr($newstemptext, '[!--info.pre--]')) {
        $next_r = $empire->fetch1("select isurl,titleurl,classid,id,title from {$dbtbpre}ecms_" . $class_r[$add['classid']]['tbname'] . " where id<$add[id] and classid='$add[classid]' order by id desc limit 1");
        if (empty($next_r['id'])) {
            $infonext = "<a href='" . $classurl . "'>" . $fun_r['HaveNoNextLink'] . "</a>";
        } else {
            //链接
            $nexttitleurl = sys_ReturnBqTitleLink($next_r);
            $infonext = "<a href='" . $nexttitleurl . "'>" . $next_r['title'] . "</a>";
        }
        $newstempstr = str_replace('[!--info.pre--]', $infonext, $newstempstr);
    }
    //投票
    if (strstr($newstemptext, '[!--info.vote--]')) {
        $myvotetext = sys_GetInfoVote($add['classid'], $add['id']);
        $newstempstr = str_replace('[!--info.vote--]', $myvotetext, $newstempstr);
    }
    //评分
    if (strstr($newstemptext, '[!--pinfopfen--]')) {
        $pinfopfen = $add['infopfennum'] ? round($add['infopfen'] / $add['infopfennum']) : 0;
        $newstempstr = str_replace('[!--pinfopfen--]', $pinfopfen, $newstempstr);
        $newstempstr = str_replace('[!--infopfennum--]', $add['infopfennum'], $newstempstr);
    }
    $string = $newstempstr;
    //替换变量
    $string = str_replace('[!--p.title--]', strip_tags($ptitle), $string);
    $string = str_replace('[!--next.page--]', $thisnextlink, $string);
    $string = str_replace('[!--page.url--]', $truepage, $string);
    $string = str_replace('[!--title.select--]', $titleselect, $string);
    return $string;
}
if (empty($newstemp_r['tempid'])) {
    printerror('ErrorUrl', '', 1);
}
//页面支持标签
if ($public_r['dtncanbq']) {
    $newstemp_r['temptext'] = DtNewsBq('text' . $newstemp_r['tempid'], $newstemp_r['temptext'], 1);
} else {
    if ($public_r['searchtempvar']) {
        $newstemp_r['temptext'] = ReplaceTempvar($newstemp_r['temptext']);
    }
}
$string = DtGetHtml($r, $newstemp_r, $mid, $tbname, $line, $page_line, $start, $page, $search);
//缓存
if ($ecms_tofunr['cacheopen'] == 1) {
    Ecms_eCacheIn($ecms_tofunr, stripSlashes($string));
} else {
    echo stripSlashes($string);
}
//缓存
db_close();
$empire = null;
?>

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注