代码标记

HTML代码标记一律采用小写字母形式,杜绝任何使用大写字母的方式
模板中所有的逻辑体,如{if}、{loop}等,必须前后使用HTML注释(),即类似的形式。事实上,Discuz!模板编译器是支持不加HTML注释的逻辑体写法的,但加入注释可以使得模板可读性更好,同时方便用户使用DreamWeaver或FrontPage等对模板进行修改。
在HTML标记中使用的逻辑体无需使用HTML注释(),即<input type=”text”{if xxx} value=”1”{/if} />

书写规则

HTML

所有HTML标记参数赋值需使用双引号包含,例如,应当使用<input type=”text” name=”test” value=”ok” />,而绝对不能使用<input type=text name=test value=ok />。
在任何情况下,产品中的模板文件必须采用手写HTML代码的方式,而绝对不能使用DreamWeaver、FrontPage等自动网页制作工具进行撰写或修改。
非成对标记必须以“/>”结尾,如
、<input …/>,<input /> 标记的属性必须按照以下顺序书写:<input type=”” name=”” id=”” class=”” … />

变量

模板中使用的变量,依据作用和出现位置不同,分为几种方式:

  • 逻辑体中,即被包围起来的部分,例如这种形式,其中的变量书写规范与PHP程序中完全一致;

  • 模板内容中,即未被包围起来的部分,与PHP程序中最大的不同是,对数组字符串类型下标无需加入单引号,因为Discuz!模板编译器会在对模板进行编译时将这部分的单引号自动加入。
    偶尔的,开发者需要使用{}将变量括起来,以免出现模板编译错误,可能的情况如下:

  • 变量前后含有中括号的或其他敏感字符的(包括但不限于“$”、“’”等),正确的写法为descriptionnew[{$buddy[buddyid]}];

  • 数组的下标为变量的,正确的写法为{$extcredits[$creditstrans][title]};

  • 其他变量十分复杂的情况。

语言元素

Discuz!模板编译器可以解析对应于./templates/default/templates.lang.php(以默认模板为例)的语言元素。在模板中调用相应语言元素的代码为{lang item},其中item为在templates.lang.php中定义的语言元素名。

缩进

在Discuz!的*.htm模板文件中,由于具备逻辑结构,故不考虑任何HTML本身的缩进,所有缩进均意为着逻辑上的缩进结构。缩进采用TAB方式,不使用空格作为缩进符号,仅需适当断行即可。例如:

  1. <!--{loop $threadlist $thread}-->
  2. <table cellspacing=”0” cellspadding=”0” border=”0”>
  3. <tr><td>$thread[message]</tr></td>
  4. </table>
  5. <!--{/loop}-->
  6.