在Dedecms CMS中,我们可能会遇到需要在列表页或者首页的arclist标签中添加当前文章标签的需求。
实现这一目标的方法是什么呢?
首先,Dedecms CMS提供了tag标签,如下所示:
{dede:tag row='10' getall='1' sort='month'}
[field:tag /]
{/dede:tag}
然而,这个标签并不能满足需求,因为在列表或首页中调用的文章是循环的,即在 {dede:list}{/dede:list} 或 {dede:arclist}{/dede:arclist} 中。因此,在这些循环结构中无法嵌套其他标签。
例如,下面的代码是错误的:
{dede:arclist}
{dede:tag row='10' getall='1' sort='month'}
[field:tag /]
{/dede:tag}
{/dede:arclist}
错误的原因在于arclist标签不能嵌套其他标签。
那么,解决这个问题的方法是什么呢?
可以使用Dedecms CMS提供的PHP接口:[field:id runphp=yes] ... [/field:id]。
完整的标签代码如下:
{dede:arclist}
标签 : [field:id runphp=yes]
global $dsql;
$tags = '';
$query = "SELECT tag FROM `dede_taglist` WHERE aid='@me' ";
$dsql->Execute('tag',$query);
while($row = $dsql->GetArray('tag'))
{
$tags .= "" . $row['tag'] . ", ";
}
@me=$tags;
[/field:id]
{/dede:arclist}
对于伪静态的情况,可以参考以下代码:
[field:id runphp=yes]global $dsql;$tags = '';$query = "SELECT tid,tag FROM `dede_taglist` WHERE aid='@me' ";$dsql->Execute('tid,tag',$query);while($row = $dsql->GetArray('tid,tag')){$tags .= "" . $row['tag'] . "";}@me=$tags;[/field:id]
总结来说,如果你熟悉PHP,那么通过Dedecms CMS提供的runphp=yes功能可以解决许多无法嵌套的问题。这一功能非常实用,尤其是在仿站或进行二次开发时可能会用到。