DISCUZ1.5模板语法定义

  • 格式:pdf
  • 大小:81.23 KB
  • 文档页数:3

Discuz!的模板采用近似PHP表达式的语法,支持的元素如下:
a.<!–{…}–>
逻辑元素包围符,该符号用于包含条件和循环元素
1.条件判断
<!--{if expr1}-->
statement1
<!--{elseif expr2}-->
statement2
<!--{else}-->
statement3
<!--{/if}-->
2.这是一个典型的条件模板,当条件expr1为真时,显示模板
statement1内容,否则当expr2为真时,显示模板statement2
内容,否则显示模板statement3的内容。

如同其他语言中的条件
控制一样,其中<!–{elseif expr}–>和<!–{else}–>是非
必须的。

3.不带下标变量的数组循环
<!--{loop$array$value}-->
statement
<!--{/loop}-->
4.相当于PHP的数组循环语句:
foreach($array as$value){
statement
}
5.带下标变量的数组循环
<!--{loop$array$key$value}-->
statement
<!--{/loop}-->
6.相当于PHP的数组循环语句:
foreach($array as$key=>$value){
statement
}
7.逻辑元素包围符在{}外面包含了html的注释符号<!––>,
除了为了和信息元素相区别外,也方便了使用Dreamweaver和
Frontpage之类工具编辑模板的用户。

因逻辑元素会被识别为
html的注释而不被显示,对于绝大多数用户,逻辑元素中的内容
是完全不需要修改的,甚至修改错一个字符就可能引起错误信息和
整个系统无法运行。

因此通常您在修改模板的时候,不要修改模
板的逻辑信息,更不要将逻辑信息内部元素(如<!–{else}–>等)
的前后位置作以修改,否则可能会导致错误。

如果您的模板被不慎
修改损坏,请立即用原标准默认模板覆盖,即可恢复。

8.对于高手而言,实际上外部的<!––>是可以省略不写的,可以
用于某些元素在模板中的定位,但强烈建议普通用户不要轻易尝试。

b.{…}
信息元素包围符
1.{CONSTANT}
可以引用界面替换变量,其中必须为大写字母,该符号实际的作用
是引用PHP常量CONSTANT,因此也可以通过它来引用其他的常量
内容。

2.{lang variable}
可以在模板中引用语言变量variable的内容,语言变量经由
ng中数组$language定义。

如{lang
post_edit}的内容在编译模板的时候被替换为
$language['post_edit']的内容,简体中文版的意思是“编辑帖
子”。

3.{template name}
模板嵌入符,为了避免模板的冗长,可以使用本符号来将name模
板的内容嵌入本模板中(实际上为引用)。

4.{eval statement}
运行PHP语句体statement。

推荐只在特别必须的时候才使用该
结构,因为它会破坏模板的结构和可读性。

如{eval echo
‘template!’;}实现的功能为echo‘template’;
5.{LF}
换行符,因为Discuz!模板引擎会忽略掉多余的换行(\n),这
个符号用来成生需要的\n。

我们所推荐的模板修改方法:通过普通编辑器手工书写html或通过Dreamweaver或Frontpage修改。

但是修改需切记,同一逻辑元素内或嵌套中元素的位置和内容切勿修改,即通常情况下,您不能把<!–{}–>包围的内容单独的移动,更不能删除。

但是整个最外部逻辑结构是可以移动或删除的。

如果修改后模板所在页面在输出类似如下的错误信息Parse error:parse error,unexpected‘}’in
/home/username/forums/forumdata/templates/1_login.tpl.php on line6,说明模板中出现了无法匹配,或格式错误的逻辑元素,请仔细检查是否有元素不对应,没有结束或嵌套损坏,格式错误的现象,必要时可以恢复原始模板来解决问题。

Discuz!提供了方便的界面打包程序,前面已对其格式做了介绍,将导出信息的内容粘贴到系统设置中风格方案中的导入界面方案中,执行即可。

程序会自动解析数据内容,恢复相关的界面设置,自定义替换变量和所需的模板设置。

如果被导出界面使用了非默认模板,必须将./templates目录属性设置为777,以便导入程序自动建立模板记录和文件夹。

定义变量说明
<?exit?>
<!–{eval$i=2}–>
<!–{if$i==1}–>
123
<!–{/if}–>
<!–{block name=”spaceblog”
parameter=”notype/1/order/i.dateline,stpost/limit/0,14/cachetime /900/cachename/newti/tpl/data”}–><!–最新日志–>
<!–{eval$i=0;}–>
<!–{loop$_SBLOCK['newti']$value}–>
<!–{if$i%2==0}–>//如果i除以2的余数等于0
<div class=”listbg”><!–{else}–>
<div class=”listbg2″><!–{/if}–>
·[<span class="listA">$value[typename]</span>]<a
class=”listA”href=”$value[url]”title=”$value[subjectall]”target=”_blank”>$value[subject]</a></div>
<!–{eval$i++;}–>
<!–{/loop}–>
<!–{eval for($i=1;$i<=5;$i++){}–>
<!–{eval echo“Hello World!<br/>”;}–>
<!–{eval}}–>。