本文主要针对东坡网“TAG高级管理”插件。对于帝国cms原版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可以做如下图展示:
插件自带一个聚合页,前台文件是 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}&page={R:3}" /> </rule> <rule name="taglist"> <match url="^(.*/)*tags/(.*)_(.*)\?*(.*)$" /> <action type="Rewrite" url="{R:1}/e/tags/htag.php\?tag={R:2}&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}&page={R:3}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
在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
在列表模式下,开启使用程序代码,代码如下
$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首页选择封面模板,在模板中输入以下代码:
<?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>
©2013-2019 DP1037.COM东坡网,致力于帝国cms插件和二次开发,为帝国cms加油! 备案号:粤ICP备14036885号-2