详情页

帝国CMS TAG高级管理帮助

时间:2023年06月09日

编辑:佚名

本文主要针对东坡网“TAG高级管理”插件。对于帝国cms原版tag系统来说,由于缺少插件支持,涉及伪静态部分代码是不可用的。
这个网页的调用除了设计tag分类链接代码,其它都适合于tag静态化插件,仅需将其中出现的user_hTagLink换成user_HtmlTagLink
一、TAG调用问题
使用以下各种调用方法的前提条件是:已经按照插件安装说明,将 user_hTagLink 函数写入了 e/class/userfun.php 文件中。
1.1 如何调用当前信息的TAG
将以下函数放入e/class/userfun.php 文件中
//信息所属tag
function user_ReturnTagStr($id,$classid,$exp="<li>|</li>",$limit=10){
    global $dbtbpre,$empire,$public_r;
    $tagstr='';
    $i=0;
    $q=explode("|",$exp);
    $tsql=$empire->query("select tagid from {$dbtbpre}enewstagsdata where id=".$id." and classid=".$classid."");
    while($tr=$empire->fetch($tsql)){
        $tt=$empire->fetch1("select * from {$dbtbpre}enewstags where tagid=".$tr['tagid']." limit 1");
        if($tt['tagid']){
            if($i>$limit&&$limit){
                break;
            }
            $tagurl=user_hTagLink($tr['tagid']);
             $tagstr.=$q[0].'<a href="'.$tagurl.'" title="'.$tt['tagname'].'" class="c1" target="_blank">'.$tt['tagname'].'</a>'.$q[1];
            $i+=1;
        }
    }
    return $tagstr;
}
在信息页中的调用方法:
<?=user_ReturnTagStr($navinfor['id'],$navinfor['classid'],"| ",4)?>
在列表页中开启程序代码,调用方法:
$tagstr=user_ReturnTagStr($r['id'],$r['classid'],'<li class="tag">|</li>',10);
$listtemp='其它代码'.$tagstr.'其它代码';
在灵动标签中的调用方法:
[e:loop={灵动标签调用语句}]
<?
$thistagstr=user_ReturnTagStr($bqr['id'],$bqr['classid'],'| ',10);
echo $thistagstr;
?>
[/e:loop]
1.2 按TAG分类调用TAG
调用代码如下:
<?
$tcsql=$empire->query("select * from {$dbtbpre}enewstagsclass where classid>0 order by classid desc");
while($tcr=$empire->fetch($tcsql)){
    //TAG分类链接
    $tagclassurl=user_TagClassUrl($tcr['classid'],1);
?>
    <!-- 显示分类名称 -->
   <div class="showtag">
    <h3><a href="<?=$tagclassurl?>"><?=$tcr['classname']?></a></h3>
         <ul>
    <?
    $tsql=$empire->query("select * from {$dbtbpre}enewstags where cid=".$tcr['classid']." order by tagid desc limit 10");
    while($tr=$empire->fetch($tsql)){
        $tagurl=user_hTagLink($tr['tagid']);
    ?>
        <!-- 显示tag模板开始 -->
        <li><a href="<?=$tagurl?>"><?=$tr['tagname']?></a>(<?=$tr['num']?>)</li>
        <!-- 显示tag模板结束 -->
    <?
    }
    ?>
        </ul>
  </div>
<?
}
?>
在以上代码中,蓝色部分控制了现实tag的分类,可以自由修改。classid>0 表示已分类的tag,classid=3 表示分类id为3的tag
红色部分控制了每个分类下TAG显示的数量,数字部分可以自由修改。若限制显示数量,则可删除红色部分。
1.3 常规的批量调用TAG
调用代码如下:
<ul>
<?
$tsql=$empire->query("select * from {$dbtbpre}enewstags order by tagid desc limit 10");
while($tr=$empire->fetch($tsql)){
    $tagurl=user_hTagLink($tr['tagid']);
?>
        <!-- 显示tag模板开始 -->
        <li><a href="<?=$tagurl?>"><?=$tr['tagname']?></a>(<?=$tr['num']?>)</li>
        <!-- 显示tag模板结束 -->
<?
}
?>
</ul>
在以上代码中,绿色部分控制了tag显示排序,常用方式有三种:tagid desc 最大tagid在最前,tagid 最小tagid在最前,num desc tag信息数最多在最前
二、结构说明及相关概念
在本插件中,前台tag可以做如下图展示:
TAG展示结构
插件自带一个聚合页,前台文件是 e/tags/alltags.php ,此文件可以展示上图中第一级和第二级的类容。此文件支持封面模板和列表模板两种形式,可以在插件中设置。以上是不带参数的情况。此文件支持两个参数:cid——TAG分类id;page——分页号,当带有参数时,自动转为列表模式。
上图中第三级的内容就是最终tag展示页了,前台文件是 e/tags/htag.php ,此文件支持两个参数:tag——tag标识,可以是tagid或者tag的拼音,具体情况根据插件设置;page——分页号。
所谓的“TAG伪静态首页”,就是tag在没有分页的情况下时的链接。
三、伪静态说明
在插件设置中,一般来说可以将设置伪静态格式如下:
TAG伪静态格式:tags/[!--tag--]_[!--page--]
TAG伪静态首页:tags/[!--tag--]/
TAG首页分页伪静态:tags-[!--cid--]-[!--page--]
TAG首页伪静态:tags/
根据以上伪静态格式,提供服务器的四条伪静态规则,仅供参考。
apache的.htaccess:
RewriteEngine On
#tag首页
RewriteRule ^tags/(.*)/$ e/tags/htag.php?tag=$1&page=$2
#tag列表
RewriteRule ^tags/(.*)_(.*)$ e/tags/htag.php?tag=$1&page=$2
#alltag
RewriteRule ^tags/$ e/tags/alltags.php
#alltag-cid
RewriteRule ^tags-(.*)-(.*)$ e/tags/alltags.php?cid=$1&page=$2
Nginx:
rewrite ^([^\.]*)/tags/(.*)/$ $1/e/tags/htag.php?tag=$2&page=$3 last;
rewrite ^([^\.]*)/tags/(.*)_(.*)$ $1/e/tags/htag.php?tag=$2&page=$3 last;
rewrite ^([^\.]*)/tags/$ $1/e/tags/alltags.php last;
rewrite ^([^\.]*)/tags-(.*)-(.*)$ $1/e/tags/alltags.php?cid=$2&page=$3 last;
IIS6的httpd.ini:
[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32
#tag首页
RewriteRule ^tags/(.*)/$ e/tags/htag.php?tag=$1&page=$2
#tag列表
RewriteRule ^tags/(.*)_(.*)$ e/tags/htag.php?tag=$1&page=$2
#alltag
RewriteRule ^tags/$ e/tags/alltags.php
#alltag-cid
RewriteRule ^tags-(.*)-(.*)$ e/tags/alltags.php?cid=$1&page=$2
IIS7的web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
    <rule name="tagindex">
        <match url="^(.*/)*tags/(.*)/\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/htag.php\?tag={R:2}&amp;page={R:3}" />
    </rule>
    <rule name="taglist">
        <match url="^(.*/)*tags/(.*)_(.*)\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/htag.php\?tag={R:2}&amp;page={R:3}" />
    </rule>
    <rule name="alltag">
        <match url="^(.*/)*tags/\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/alltags.php" />
    </rule>
    <rule name="alltagcid">
        <match url="^(.*/)*tags-(.*)-(.*)\?*(.*)$" />
        <action type="Rewrite" url="{R:1}/e/tags/alltags.php\?cid={R:2}&amp;page={R:3}" />
    </rule>
</rules>
</rewrite>
</system.webServer>  
</configuration>
四、深度调用:tag分类链接调用
在e/class/userfun.php 文件中写入以下函数
//tag分类链接
function user_TagClassUrl($cid){
    global $htag_r;
    include_once ECMS_PATH.'e/dongpo/htag/dp_funs.php';
    $url=htag_TagClassUrl($cid);
    return $url;
}
在模板中调用此函数即可,$cid是分类id
五、深度调用:tag分类页显示tag的信息
在列表模式下,开启使用程序代码,代码如下
$tagurl=user_hTagLink($r[tagid]);
$thisstr='<a href="'.$tagurl.'"><h3>'.$r[tagname].'('.$r[num].')</h3></a><p>简介:'.$ta[intro].'<p>';
$infostr='';
$isql=$empire->query("select id,classid from {$dbtbpre}enewstagsdata where tagid='".$r[tagid]."' limit 10");
while($ir=$empire->fetch($isql)){
    if(empty($class_r[$ir[classid]][tbname])){
        continue;
    }
    $infor=$empire->fetch1("select id,title,titleurl from {$dbtbpre}ecms_".$class_r[$ir[classid]][tbname]." where id='$ir[id]' limit 1");
    if(empty($infor['id']))    {
        continue;
    }
    $infostr.='<a href="'.$infor[titleurl].'">'.$infor[title].'</a>';
}
if($infostr){
    $infostr='<p>'.$infostr.'</p>';
}
$listtemp=$thisstr.$infostr.'<hr>';
在模板中调用此函数即可,$cid是分类id
六、深度调用:tag首页按照字母顺序调用
tag首页选择封面模板,在模板中输入以下代码:
<?php
$zm_r=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
?>
<!-- 全部字母 -->
<div class="zmlist">
    字母:
    <?
    foreach($zm_r as $zm){
    ?>
        <a href="#<?=$zm?>"><?=strtoupper($zm)?></a>
    <?
    }
    ?>
</div>
<div class="taglist">
<!-- 每个字母下的tag -->
<?
foreach($zm_r as $zm){
?>
<h3><a name="<?=$zm?>"><?=strtoupper($zm)?></a></h3>
<ul>
    <?
        $zsql=$empire->query("select tagid from {$dbtbpre}dp_tagsadd where py like '".$zm."%' order by tagid desc");
        while($zr=$empire->fetch($zsql)){
            $t=$empire->fetch1("select * from {$dbtbpre}enewstags where tagid='$zr[tagid]' limit 1");
            $tagurl=user_hTagLink($zr[tagid]);
            ?>
            <li><a href="<?=$tagurl?>"><?=$t['tagname']?></a></li>
            <?
        }
    ?>
</ul>
<?
}
?>
</div>
相关文章
猜你需要