通用变量
语法为 {v:标签名称} ,如 {v:linktarget} 。所引用的变量在模板的任何位置均有效。
循环
语法为 {loop:存储数据的数组名称}...{/loop} ,如 {loop:outarray}...{/loop} 。
{loop:xxx}与{/loop}之间的语句将循环输出,循环次数取决于数组中的元素个数(如文章的条数)。
outarray是程序通用的“存储数据的数组名称”,在大部分对象中可以通用。
循环中的变量
语法为 {lv:标签名称} ,如 {lv:url} 。循环中的变量,必须出现在{loop:xxx}与{/loop}之间。
判断
语法为 {if:符合PHP语法的表达式}...{/if},如 {if:$i==5}...{/if} 。
只有表达式条件符合时,{if:xxx}...{/if}之间的内容才会显示。
计数器
在{loop:xxx}与{/loop}之间使用,名称为 $i 。通常用于判断中,例子:
当显示到第5条时:{if:$i==5}...{/if}
当显示到偶数条(即计数值被2整除)时(通常用于交替出现的背景效果):{if:$i%2==0}...{/if}
直接引用计数值(通常用于显示文章标题前的序号图片):<img src="number/{v:i}.gif" />
对象
提示:对象标签语法复杂,一般由程序自动生成即可(进入后台的“模板编辑”,进入“可视化设计”或“编辑源码”均可在界面上方找到“标签生成器”)
语法为 {obj:编号:模块名:对象名:'属性名称'=>'值','属性名称'=>'值'...}...{/obj}
例子:{obj:12:dpcms:titlelist:'entrynum'=>'6','titlemaxlen'=>'34'}...{/obj}
特别提醒:对象标签不可嵌套,{obj:...}与{/obj}之间不能出现obj标签。
编号由程序自动添加(进入可视化编辑时),编号不一定要正确,也可以留空,如{obj::dpcms...}
模块名可以参考mod下的子目录名称。对象名可以参考各子目录下obj中的PHP文件名。
对象名后面的参数部分,请参考模板教程中与该对象有关的文章。
在{obj:...}标签与{/obj}标签之间,是对象的主体代码,通常由循环组成。例子:
{obj:1:dpcms:taglist:'tagnum'=>'10'}
{loop:outarray}<a href="{lv:url}" style="font-size:{lv:size}px;color:{lv:color}" target="_blank">{lv:subject}</a>({lv:num}) {/loop}
{/obj}
这是一个CMS的标签(TAG)列表。在{obj:...}标签中,程序了解到这是CMS模块的标签列表对象,并了解到最多显示10个标签,并将标签数据读入数组outarray中。而后,程序循环输出outarray,相当于把标签和链接一个个输出来。最后,{/obj}告诉程序对象执行结束。
在{obj:...}标签的参数部分之后,还有一个可选参数,语法为 :uselib(模板名) ,其中模板名可省略(表示直接引用lib目录下的对应模板做为对象的主体代码);模板名不用加.htm后缀。例子:
{obj:1:dpcms:titlelist:'entrynum'=>'1','titlemaxlen'=>'26':uselib()}{/obj}
我们注意到,这个对象标签没有主体代码(即{obj:...}和{/obj}之间的循环输出等),因为他直接调用了lib/obj_dpcms_titlelist.htm中的主体代码。下面是一个更常用的例子:


