XHTcms 模板语法和C#非常接近,4.0和3.0版本中,标签语法大同小异,依然符合于技术开发人员的编程习惯。如果你是一名程序员,下面的语法我相信只需要看一次便可牢牢记住各种标签的使用规则,所以你不必担心XHTcms模板难掌握。如果非程序员,难度有所加大,毕竟我们考虑到了整个系统的扩展性和二次开发,所以比较偏向于技术开发人员。

    页面嵌套标签

    如果想在一个模板页面中嵌入另一个模板页的内容可使用该标签,注意避免被嵌套的页面嵌套主模板页,这样会造成迭代循环。另外,嵌套的深度最多只能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 "XHTcms.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(参数一,参数二,...)%>