Discuz!NT模板中用到的语法

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%>



<%if
{userid}!=-1%>
您已经登录
<%/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%>


你也许会惊讶, 就这么几个吗? 是的, 主要的显示控制语句就以上的几个, 界面中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文件时提供的变量都为小写, 只有这样, 才可以维护这一规则.

模板中一般都会有一些共用的部分, 比如多个页面共用类似的头部或菜单, 这样的共用部分模板一般被称为子模板, 它们仅被其它页面包含, 不会单独被显示, 因此无需生成aspx页面, 为了避免它们被生成, 也为了更好的与其它页面模板文件区分, Discuz!模板规定: 所有子模板文件名必须以“_”开头,如 _header.htm

如果想查看模板的变量和语句的使用方法范例, 可参看http://nt.discuz.net/doc/default.aspx?cid=17

大多数情况下,我们强烈推荐您在我们随本文档所提供的模板蓝本基础上来修改为自己想要的模板风格,这样制作模板的速度会比较快。
原文地址:https://www.cnblogs.com/aaa6818162/p/1459392.html