当前位置:首页 > 帝国CMS学习

帝国CMS列表页调用文章tag两种方法

作者:Shu | 时间:2015-10-09 | 栏目:帝国CMS学习 | 围观热度:1455

列表页调用tag的方法有两种,一种是切割副表的infotags字段,第二种种是从phome_enewstagsdata表中提取。如果采用tagid或tag静态化,则推荐使用第二种方法,效率更高。如果采用tagname的动态链接方式,可以采用第一种方法。

第一种方法:切割infotags字段 
将以下代码复制到e/class/userfun.php 中

//获取某信息Tag
function sGetInfoTag($r,$num=5){
    global $empire,$dbtbpre,$public_r;
    $infotags_r=explode(',',$r['infotags']);
    if(!$infotags_r){
        return '';
    }
    $infotags_r=array_filter($infotags_r);
    $tagstr='';
    $i=1;
    foreach($infotags_r as $k=>$tagname) {
        $tt=$empire->fetch1("select * from {$dbtbpre}enewstags where tagname='".$tagname."' limit 1");
        if(!$tt) continue;
        if($i>$num) continue;

        if(empty($public_r['rewritetags']))
        {
            $tagurl=$public_r['newsurl']."e/tags/?tagname=".urlencode($tagname);
        }else{
            $tagstr=$public_r['newsurl'].str_replace('[!--tagname--]',$tagname,$public_r['rewritetags']);
        }
        $tagstr.='<a href="'.$tagurl.'">'.$tagname.'</a>';
        $i++;
    }
    return $tagstr;
}

调用方式:

//$r为当前信息数组 5为最多调用多个个tag标签出来
$tagstr=sGetInfoTag($r,5);
//以下只是个很简单的,想要实现自己的列表样式,请参考 http://www.dgcms.cn/jishu/ecms/23.html
$listtemp='<li>'.$tagstr.'</li>';

第二种方法:从phome_enewstagsdata表中提取
将以下代码复制到e/class/userfun.php 中

//获取某信息Tag
function sGetInfoTag($r,$num=5){
    global $empire,$dbtbpre,$public_r;
    $sql=$empire->query("select tagid from {$dbtbpre}enewstagsdata where id='$r[id]' and classid='$r[classid]' ");
    $i=1;
    while($r=$empire->fetch($sql)) {
        $tt=$empire->fetch1("select * from {$dbtbpre}enewstags where tagid=".$r['tagid']." limit 1");
        if(!$tt) continue;
        if($i>$num) continue;
        $tagname=$tt['tagname'];
        
        if(empty($public_r['rewritetags']))
        {
            $tagurl=$public_r['newsurl']."e/tags/?tagname=".urlencode($tagname);
        }else{
            $tagstr=$public_r['newsurl'].str_replace('[!--tagname--]',$tagname,$public_r['rewritetags']);
        }
        $tagstr.='<a href="'.$tagurl.'">'.$tagname.'</a>';
        $i++;
    }
    return $tagstr;
}

调用方法:

//$r为当前信息数组 5为最多调用多个个tag标签出来
$tagstr=sGetInfoTag($r,5);
//以下只是个很简单的,想要实现自己的列表样式,请参考 http://www.dgcms.cn/jishu/ecms/23.html
$listtemp='<li>'.$tagstr.'</li>';
说明:

特别说明:
1、以上两种方法,任选一种,不能把两个函数同时复制到userfun.php文件,会造成函数名冲突,除非你修改任意一个函数名

2、以上代码放入列表内容模板(list.var) ,必须开启使用程序代码。

如果你看完以后,还是一头雾水,可联系本站长QQ:610712114,购买现成的Tags静态生成插件