帝国CMS默认的tag伪静态方法是以“tagname”为基础的,但有时我们可能需要以“tagid”来实现tag的伪静态功能。以下是具体的实现步骤:

第一步:修改 eclassconnect.php 文件

function eReturnRewriteTagsUrl($tagid,$tagname,$ecms=0){
    global $public_r,$empire,$dbtbpre;
    if(!$tagid){
        $tagname=RepPostVar($tagname);
        if(!$tagname){
            $r['pageurl']=$public_r['newsurl'];
            $r['rewrite']=0;
            return $r;
        }
        $tagr=$empire->fetch1("select tagid,num from {$dbtbpre}enewstags where tagname='$tagname' limit 1");
        if(!$tagr['tagid']){
            $r['pageurl']=$public_r['newsurl'];
            $r['rewrite']=0;
            return $r;
        }
        $tagid=$tagr['tagid'];
    }
    if(empty($public_r['rewritetags'])){
        $r['pageurl']=$public_r['newsurl']."e/tags/?tagid=".$tagid;
        $r['rewrite']=0;
    }
    else{
        if($ecms==1){
            $r['pageurl']=$public_r['newsurl'].str_replace(array('[!--tagname--]','[!--page--]'),array($tagid,0),$public_r['rewritetags']);
        }
        else{
            $r['pageurl']=$public_r['newsurl'].str_replace('[!--tagname--]',$tagid,$public_r['rewritetags']);
        }
        $r['rewrite']=1;
    }
    return $r;
}

搜索“function eReturnRewriteTagsUrl($tagid,$tagname,$ecms=0){”,找到函数 eReturnRewriteTagsUrl 并将其替换为上述代码。

第二步:修改 etagsindex.php 文件

// 伪静态
$pagefunr=eReturnRewriteTagsUrl($tagid,$tagname,0);
$pagefunr['repagenum']=0;

// 分页
if($pagefunr['rewrite']==1){
    $listpage=InfoUsePage($num,$line,$page_line,$start,$page,$search,$pagefunr);
}
else{
    $listpage=page1($num,$line,$page_line,$start,$page,$search);
}

将分页函数部分的原有代码注释掉,并替换成上述代码。

第三步:后台设置 tag 伪静态
在后台的伪静态设置中,按照默认格式设置为:tags-[!--tagname--]-[!--page--].html 即可。

第四步:服务器伪静态规则
对于使用 Apache 的服务器,添加以下伪静态规则。如果是其他类型的服务器,请根据实际情况进行调整:

RewriteRule ^tags-(.*)-(.*)$  e/tags/index.php?tagid=$1&page=$2

通过以上步骤,您可以成功地以 tagid 来实现 tag 的伪静态功能。这样不仅可以优化网站结构,还可以提升搜索引擎优化(SEO)的效果。