方法一、直接在模板内写调用代码

好处是无需修改任何文件,直接可以调用。缺点是模板内的代码看起来会很复杂。代码如下:

[e:loop={0,13,3,0}]
          <?php
$fr=$empire->fetch1("select infotags from diansui_ecms_news_data_1 where id='$bqr[id]'");
?>
<?php
$alltag="";
$tag=explode(",",$fr[infotags]);
for($t=0;$t<count($tag);$t++)
{
$alltag.='<a href="/tags-'.urlencode($tag[$t]).'-0.html">'.$tag[$t].'</a>';
}
?>
<?php
if($bqr[titlepic])
{
?>
<li class='clearfix'><span class='fl'><a href='<?=$bqsr['titleurl']?>'  target='_blank' rel='nofollow'><img src='<?=$bqr['titlepic']?>' alt='<?=$bqr['title']?>' /></a></span><h3><a href='<?=$bqsr['titleurl']?>' title='<?=$bqr['title']?>' target='_blank'><?=$bqr['title']?></a></h3><p><?=$bqr['smalltext']?>...<a href='<?=$bqsr['titleurl']?>' title='更多' target='_blank'>[更多]</a></p><div class='mn-lis-tit'><span class='mn-date'><?=date('Y-m-d',$bqr[newstime])?></span><span class='mn-category ml25'>类目:<a href='<?=$bqsr[classurl]?>'><?=$bqsr[classname]?></a></span><span class='mn-keyword ml25'>关键词:<?=$alltag?>
</span></div></li>
<?php
}
else
{
?>
<li class='clearfix border'><h3><a href='<?=$bqsr['titleurl']?>' title='<?=$bqr['title']?>' target='_blank'><?=$bqr['title']?></a></h3><p><?=$bqr['smalltext']?>...<a href='<?=$bqsr['titleurl']?>' title='更多' target='_blank'>[更多]</a></p><div class='mn-lis-tit'><span class='mn-date'><?=date('Y-m-d',$bqr[newstime])?></span><span class='mn-category ml25'>类目:<a href='<?=$bqsr[classurl]?>'><?=$bqsr[classname]?></a></span><span class='mn-keyword ml25'>关键词:<?=$alltag?></span></div></li>
<?php
}
?>
[/e:loop]

 

方法二、将调用代码整理成函数然后再调用

好处是模板内的代码可以更简洁,调用更方便。论坛里给的方法都是直接在模板里写一堆代码,整理下写成函数,调用起来更方便。

将以下代码添加到userfun.php中


function taglinks($aid, $num=5, $tbname='news')
{
    global $public_r,$dbtbpre,$empire,$navinfor,$class_r;
    $qr = $empire->fetch1("select rewritetags from {$dbtbpre}enewspublic limit 1");
    $sr = $empire->fetch1("select stb from {$dbtbpre}ecms_{$tbname} where id=$aid");
    $fr = $empire->fetch1("select infotags from {$dbtbpre}ecms_{$tbname}_data_{$sr[stb]} where id=$aid");
    $tagstr = ''.$fr[infotags].'';
    $tagarr = explode(",", $tagstr);
    for($i=0; $i<count($tagarr) && $i<$num; $i++)
    {
        if($tagarr[$i])
        {
            if($qr[rewritetags]) { // 开启伪静态
                $link = $public_r[newsurl]."tags-".urlencode($tagarr[$i])."-0.html";
            } else { // 动态链接
                $link = $public_r[newsurl]."e/tags/?tagname=".urlencode($tagarr[$i]);
            }
            $tags .= "<a href='$link' target='_blank'>".$tagarr[$i]."</a> ";
        }
    }
    return $tags;
}
?>



有朋友需要调用tagid形式的,再查次数据库就可以了
以下代码修改下
if($tagarr[$i])
{
        if($qr[rewritetags]) { // 开启伪静态
                $link = $public_r[newsurl]."tags-".urlencode($tagarr[$i])."-0.html";
        } else { // 动态链接
                $link = $public_r[newsurl]."e/tags/?tagname=".urlencode($tagarr[$i]);
        }
        $tags .= "<a href='$link' target='_blank'>".$tagarr[$i]."</a> ";
}



修改后:
 
if($tagarr[$i])
{
        $tr = $empire->fetch1("select * from {$dbtbpre}enewstags where tagname='".$tagarr[$i]."'");
        if($qr[rewritetags]) { // 开启伪静态
                $link = $public_r[newsurl]."tags-etagid".$tr[tagid]."-0.html";
        } else { // 动态链接
                $link = $public_r[newsurl]."e/tags/?tagid=".$tr[tagid];
        }
        $tags .= "<a href='$link' target='_blank'>".$tagarr[$i]."</a> ";
}



参数:文章ID,调用标签数量,表名

灵动标签调用:<?=taglinks($bqr[id])?>

列表页,勾选list.var使用程序代码,代码示例
$listtemp='
<li>
    <h3><a href="[!--titleurl--]">[!--title--]</a></h3>
    <p>[!--smalltext--]</p>
    <p>'.taglinks($r[id]).'</p>
</li>
';



内容页调用:<?=taglinks($navinfor[id])?>