DTcms 模板语法和C#非常接近,4.0和3.0版本中,标签语法大同小异,依然符合于技术开发人员的编程习惯。如果你是一名程序员,下面的语法我相信只需要看一次便可牢牢记住各种标签的使用规则,所以你不必担心DTcms模板难掌握。如果非程序员,难度有所加大,毕竟我们考虑到了整个系统的扩展性和二次开发,所以比较偏向于技术开发人员。
页面嵌套标签
如果想在一个模板页面中嵌入另一个模板页的内容可使用该标签,注意避免被嵌套的页面嵌套主模板页,这样会造成迭代循环。另外,嵌套的深度最多只能5层。其中src所指定的路径为当前相对路径,如src="common/_header.html"
<!--一般在当前模板下使用可下面的嵌套标签-->
<%template src="模板页面相对路径"%>
<!--如需跨模板访问可使用下面的嵌套标签,一般插件模板使用较多,前提该模板须存在,否则访问不到-->
<%template skin="模板目录名" src="模板页面相对路径"%>
当前模板路径标签
因为3.0版本中增加分站的功能,所以这里和2.1及前版本的模板标签有所不同。输出不包含/,如:templates/green/images/logo.png,同一模板目录下使用第一个种标签即可
<!--当前模板路径标签-->
<%templateskin%> <!--访问其它模板的路径标签,前提该模板须存在-->
<%templateskin="模板目录名"%>
嵌入C#代码标签
如果其它标签无法实际你想要的效果,你可以试一下直接写C#代码,如意不能使用Response.Write
<%csharp%>
//C#代码
<%/csharp%>
引用命名空间标签
如果需要引用命名空间则需要使用该标签,注意此标签不能放在嵌套的页面且需要放置在模板页的最顶部
<!--示例:<%namespace "DTcms.BLL"%>-->
<%namespace "命名空间"%>
普通变量标签
模板页的变量概念实际上就是C#的变量,在模板页调用时需加上大括号,这里往往和模板页的JS的方法体互相冲突,所以在写JS时,遇到大括号一定要换行。
<!--直接变量-->
{varname}
<!--实体变量,如:{config.webname}-->
{var.item}
数据变量标签
数据变量一般在循环列表时使用到,另外在显示内容时也会用到
<!--循环列表时的数据变量,如:{dr[title]}-->
{var[...]}
<!--显示实体数据变量,如:model.fields[title]-->
{var.item[...]}
loop循环标签
loop循环标签主要是数据列表中使用的,其中自带有行号变量datarow__loop__id,该变量是从1开始
参数说明:datarow:DataRow类型的变量,同一页面内不可重复,否则编译出错
datatable:DataTable类型的变量,使用前请确保该参数已声明赋值
<!--loop循环标签-->
<%loop datarow datatable%>
...
<%/loop%>
foreach循环标签
foreach标签和C#的语法是一样的,写法也差不多,相信技术人员一看就懂。注意与loop标签不同的是它没有自带的行号变量,需要手动声明。
参数说明:type:数据类型,如DataRow
item:数据类型的变量名,自定义变量名
list:数组、结构、对象、引用类型
<!--foreach循环标签-->
<%foreach(type item in list)%>
...
<%/foreach%>
for循环标签
for标签和C#的语法也是一样的,一般很少用到。
参数说明:i:整型变量
count:整型变量
<!--for循环标签-->
<%for(int i=0;i<=count;i++)%>
...
<%/for%>
if判断语句标签
if判断语句与C#的语法一样,3.0支持二种写法,保留旧的写法
<!--第一种格式写法(推荐)-->
<%if(...)%>
...
<%else if(...)%>
...
<%/if%>
<!--第二种格式写法(旧写法)-->
<%if ...%>
...
<%else if ...%>
...
<%/if%>
continue退出当前循环标签
循环标签中分支用以结束当前循环,直接进入下一次循环的标签,使用方式同传统程序一致。
<!--continue标签-->
<%continue%>
<!--使用示例,当i等于5时退回并进入下一条循环-->
<%for(int i=0;i<=count;i++)%>
<%if(i==5)%>
<%continue%>
<%/if%>
<%/for%>
break结束循环标签
在循环标签中用以结束循环,进入后续程序的标签,使用方式同传统程序一致 。
<!--break标签-->
<%break%>
<!--使用示例,当i大于5时结束循环-->
<%for(int i=0;i<=count;i++)%>
<%if(i>5)%>
<%break%>
<%/if%>
<%/for%>
获取GET传输参数标签
获取URL地址GET传输的参数值
<!--request标签,varname为参数名-->
{request[varname]}
截取字符串长度标签
当一个字符串的长度大于你想要的值时可使用该标签
参数说明:num:int类型,字符串长度
<!--cutstring标签,{...}为变量-->
<%cutstring({...},num)%>
日期格式转换标签
把日期字符串转换成你想要的格式
参数说明:strFormat:日期格式
<!--datetostr标签,{...}为变量-->
<%datetostr({...},strFormat)%>
<!--示例一:输出年月日格式的日期-->
<%datetostr({varname},yyyy年MM月dd日)%>
<!--示例二:输出年月日时分秒格式的日期-->
<%datetostr({varname},yyyy年MM月dd日HH时mm分ss秒)%>
整型格式转换标签
当一个字符串的想转换成一个整型的数字时可使用该标签
<!--strtoint标签,{...}为字符串变量-->
{strtoint({...})}
直接输出内容标签
当一个方法返回的是字符串内容,而我们又想直接在模板页中直接输出可使用该标签。该标签支持两种写法,推荐用第一种。
<!--第一种写法(推荐)-->
<%=方法名(参数一,参数二,...)%>
<!--第二种写法(旧写法)-->
<%write 方法名(参数一,参数二,...)%>
1.5 声明变量与赋值标签
和C#语法基本一致,需要声明或在需要接受一个方法返回的内容时可以使用该标签。
参数说明:type:可选,变量的类型,如果有type则首先创建对象再赋值,否则直接赋值
ref:变量名,同一页面内不可重复
expression:变量、常量或方法都可以
<!--第一种写法(推荐)-->
<%set [type] ref=expression%>
<!--示例一-->
<%set int num=1%>
<!--再次使用时不用再声明-->
<%set num=2%>
<!--示例二-->
<%set DataTable dt=get_list(参数一,参数二,...)%>
<!--第二种写法(旧写法)-->
<%set [(type)]{ref}=expression%>
<!--示例一-->
<%set (int){num}=1%>
<!--再次使用时不用再声明-->
<%set {num}=2%>
<!--示例二-->
<%set (DataTable){dt}=get_list(参数一,参数二,...)%>