tag()的两种使用方式
发表:DESTOON模板堂(dtmoban.com)
发表时间:2016-07-26
下面我来看两段调用标签代码
一、destoon默认模板中的求购信息调用
<!--{tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc")}-->
二、自己写的调用代码
<!--{php $tags=tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc&template=null");}-->
<ul>
{loop $tags $i $t}
<li>{if $datetype}<span class="f_r px11"> {timetodate($t[addtime], $datetype)}</span>{/if}{if $showcat}<a href="{$t[caturl]}"{if $target} target="{$target}"{/if}{if $class} class="{$class}"{/if}>[{$t[catname]}]</a> {/if}<a href="{$t[linkurl]}"{if $target} target="{$target}"{/if}{if $class} class="{$class}"{/if} title="{$t[alt]}">{$t[title]}</a></li>
{/loop}
</ul>
这两个代码的都是调用最新的求购信息,咋看起来差别之 么大呢?
第二段代码明显比一段好懂,上面是调用语句,下面是循环模板,大部分开源程序的程序调用都是这么干的。
很多同学在初次接触destoon模板时,都觉得难学的原因就是destoon默认模板都是采用的第一种模式,大部分人看了标签找不到循环模板在哪里,所以无从下手修改。
这两段代码的最大区别就是,第一段的循环模板不在当前模板中,第二段是在当前模板,这也就是destoon tag()标签的两种调用方式了。
第一种方式:循环模板不在当前页面
这种方式是通过加载模板目录中的 tag/ 目面的list-**.htm 标签模板实现调用。
在tag()函数中有一个 &template 参数,用来加载tag目录下指定文件名的标签模板,如 &template=list-buy 表示加载的是tag目录下的 list-buy.htm 文件。 如果我们在tag()中不传&template参数,就默认会加载tag目录下的list.htm。
我们上面这段标签没有传&template 参数,就表示是加的默认list.htm 文件。
我想destoon官方默认模板之所以都不在当前模板中加载循环模板标签,是因为作为b2b门户系统,页面多,需要做到尽可能的少写代码,让代码尽可能多的实现重用。我在此的建议是,如果大家的循环模板是很多页面共用的,尽量放到tag下面,如果只是调用一次就用我们的第二种方法写在当前页面。
第二种方式:循环模板标签写在当前模板中
写在当前模板中的好处是维护起来更加方便,对于不懂destoon标签机制更容易看懂。
写在当前的方法是 在tag( 前面加上 php $tags= ,修改结果: <!--{php $tags=tag("0
在结尾 ")后面加上 ; (英文半角分号), 修改结果为:");}-->
并且必须传入 &template参数,设置值为 null,修改结果为:&template=null
方式2的原理是把tag()调用出来的内容赋值给 $tags 变量,然后用loop将$tags的内容循环出来给模板标签展示。在第二课我们已解释过loop了,这里就不做讲解了。
本章小结:
两种方式各有优劣,使用第二种方式时某些默认参数传进去是没有用处的,比如分页参数。具体我们会第五课做详细讲解。
一、destoon默认模板中的求购信息调用
<!--{tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc")}-->
二、自己写的调用代码
<!--{php $tags=tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc&template=null");}-->
<ul>
{loop $tags $i $t}
<li>{if $datetype}<span class="f_r px11"> {timetodate($t[addtime], $datetype)}</span>{/if}{if $showcat}<a href="{$t[caturl]}"{if $target} target="{$target}"{/if}{if $class} class="{$class}"{/if}>[{$t[catname]}]</a> {/if}<a href="{$t[linkurl]}"{if $target} target="{$target}"{/if}{if $class} class="{$class}"{/if} title="{$t[alt]}">{$t[title]}</a></li>
{/loop}
</ul>
这两个代码的都是调用最新的求购信息,咋看起来差别之 么大呢?
第二段代码明显比一段好懂,上面是调用语句,下面是循环模板,大部分开源程序的程序调用都是这么干的。
很多同学在初次接触destoon模板时,都觉得难学的原因就是destoon默认模板都是采用的第一种模式,大部分人看了标签找不到循环模板在哪里,所以无从下手修改。
这两段代码的最大区别就是,第一段的循环模板不在当前模板中,第二段是在当前模板,这也就是destoon tag()标签的两种调用方式了。
第一种方式:循环模板不在当前页面
这种方式是通过加载模板目录中的 tag/ 目面的list-**.htm 标签模板实现调用。
在tag()函数中有一个 &template 参数,用来加载tag目录下指定文件名的标签模板,如 &template=list-buy 表示加载的是tag目录下的 list-buy.htm 文件。 如果我们在tag()中不传&template参数,就默认会加载tag目录下的list.htm。
我们上面这段标签没有传&template 参数,就表示是加的默认list.htm 文件。
我想destoon官方默认模板之所以都不在当前模板中加载循环模板标签,是因为作为b2b门户系统,页面多,需要做到尽可能的少写代码,让代码尽可能多的实现重用。我在此的建议是,如果大家的循环模板是很多页面共用的,尽量放到tag下面,如果只是调用一次就用我们的第二种方法写在当前页面。
第二种方式:循环模板标签写在当前模板中
写在当前模板中的好处是维护起来更加方便,对于不懂destoon标签机制更容易看懂。
写在当前的方法是 在tag( 前面加上 php $tags= ,修改结果: <!--{php $tags=tag("0
在结尾 ")后面加上 ; (英文半角分号), 修改结果为:");}-->
并且必须传入 &template参数,设置值为 null,修改结果为:&template=null
方式2的原理是把tag()调用出来的内容赋值给 $tags 变量,然后用loop将$tags的内容循环出来给模板标签展示。在第二课我们已解释过loop了,这里就不做讲解了。
本章小结:
两种方式各有优劣,使用第二种方式时某些默认参数传进去是没有用处的,比如分页参数。具体我们会第五课做详细讲解。