不必担心, Discuz!NT模板中用到的语法是很少的, 因为我们的目的就是为了让没有程序语言基础的人也可以快速掌握.
基本语句如下:
语法 | 含义 | 举例 |
<%template tplname%> | 包含某个已存在的模板文件 | <%template _header%> |
{varname} | 显示变量 | {username} |
{var[...]} | 显示数据变量里的指定字段的值 | {forum[name]} |
<%loop item list%> ... <%/loop%> | 循环列出数据, 每个数据用{item[字段名]}表示, 数据为DataTable. | <%loop forum forumlist%> 版块名称: {forum[name]} <%/loop%> |
<%if ...%> ... <%else%> ... <%/if%> | 判断语句, <%else%>可选, 意思为: 如果满足条件... 的话 ... 否则 ... 结束 并且可以使用以下比较符: > 大于 < 小于 == 等于 >= 大于等于 <= 小于等于 != 不等于 | <%if {userid}==-1%> 您尚未登录 <%else%> 您已经登录 <%/if%> |
<%csharp%> ... <%/csharp%> | 插入c#代码 | <%csharp%> //可以插入任意c#代码 int maxattsize = 20; <%/csharp%> |
<%set [ (type) ]{ref} = [ " ]arg[ " ]%> <%set [ (type) ]{ref} = expression%> | 创建一个程序变量并赋值,具体解释如下: type - 变量的类型,如果有type则首先创建对象再赋值,否则直接赋值 ref - 这里代表变量或属性 arg - 如果此参数外有双引号,则为此值为字符串类型;如果是数字并且没有双引号封闭,则此值为整型 expression - 这里可以写表达式为ref赋值 | 创建变量并赋值: <%set (int){maxattsize} = 20%> 变量引用: <%set (int){maxattsize} = {usergroupinfo.Maxattachsize}%> 变量赋值: <%set {maxattsize} = 20%> 方法引用: <%set (int){fid} = {strtoint({forumid})}%> 字符型: <%set {forumid} = "5"%> |
<%namespace namespacename%> | 引入一个命名空间 注意:该语句不能用在子模板中 | <%namespace Discuz.ForumPlugin.Bank%> |
<%inherits classname%> | 自定义aspx页面的继承类,需要写在模板文件的最上方,子模板无效 | <%inherits "Discuz.Album.Pages.showphoto"%> |
<%continue%> | 在<%loop item list%>循环标签中分支用以结束当前循环,直接进入下一次循环的标签,使用方式同传统程序一致。 | <%loop item list%> ... ...<%if ...%> ...<%continue%> ...<%/if%> ... <%/loop%> |
<%break%> | 在循环标签中用以结束循环,进入后续程序的标签,使用方式同传统程序一致 | <%loop item list%> ... ...<%if ...%> ...<%break%> ...<%/if%> ... <%/loop%> |
你也许会惊讶, 就这么几个吗? 是的, 主要的显示控制语句就以上的几个, 界面中80%以上的情况下用上面的语句来解决就足够了, 是不是很简单?
上面灰色背景的为程序语句, (深灰色为高级语法, 普通用户制作模板时如果不懂也可以不用) 程序语句格式比较死板, 因此在书写的时候应该特别注意, 必须遵守固定的格式.
上面已经列举了两种最常见的变量用法, 下面是变量使用的一些例外, 在这里也列举一下:
语法 | 含义 | 举例 |
{templatepath} | 模板所在的路径 | <link href="templates/{templatepath}/dnt.css" rel="stylesheet" type="text/css" /> |
{strtoint(...)} | 将数字字符串转换为数字, 如果字符串不是数字, 则转换为0 , 主要用于必须将变量转换为数字才可使用的场合 | <%if {strtoint({forumid})}==1%> ... |
{var.item} | 属性变量, 中间为英文字符. 在生成的aspx文件中, 属性的第一个字符会大写, 主要用于要使用一个对象属性的场合 | 论坛名称是: {config.forumtitle} (在aspx文件中变量实际是config.Forumtitle) |
{request[...]} | 获取用户的提交, 包括url参数和表单等, 主要用于要使用用户提交的参数的场合 | <%if {request[username]}!=""%> ... |
至此, 模板中所需要用的变量和语句的方法就列举完了, 当然, 如果你了解c#语法, 一些地方可以略微灵活的处理, 这里只所以只提供几种最简单的语句, 主要还是考虑到许多站长并没有程序语言的基础.
此外, 考虑到大家书写的方便和降低书写错误的几率, Discuz!NT模版规定: 所有变量和语句均为小写, 我们也希望大家在改写aspx.cs文件时提供的变量都为小写, 只有这样, 才可以维护这一规则.
有了这些基本的了解, 接下来, 我们就可以尝试自己制作模板了