Discuz X 模板语法基础

本文由清尘发表于2011-06-23 15:47最后修改于2014-04-23属于Discuz分类

1.  include template(‘forum/forumdisplay’)

  
2.  <!–{subtemplate common/header}–>

引入模板文件

3.  <!–{ad/headerbanner/wpa_h}–>

引入广告模板

4.  <!–{if $_G['uid']}–><!–{/if}–>

DiscuzX的判断标签,如果条件成立,那么包括在这个标签中的html代码将会被显示。示例中如果用户的uid存在的话。这里面的代码就会被显示,如果为游客没有uid,那么对应的里面的html代码将不会再页面中显示出来,即使解析出来,也不会被显示。
而且if 后面的判断条件也可以用表达式的计算结果作为值,进行判断。比如

<!–{if !empty($_G['cache']['heats']['message'])}–>,<!–{ifempty($gid) && $announcements}–>

这个标签的算是模板中最常用的标签了,他同样支持形如我们php中常用的if(){}else{},或者if(){}elseif(判断条件){}else{}.他们对应的标签discuz标签分别为:<!–{if 判断条件代码}–> 显示的html<!–{else}–>若果条件不成立显示的代码<!–{/if}–>和<!–{if 判断条件代码}–> 显示的html<!–{elseif 判断条件代码}–>若果条件不成立显示的代码<!–{else}–>显示的代码<!–{/if}–>

5.  <!–{loop $catlist $key$cat}–>
循环标签,这是一个使用频率很高的标签,他会实现php中foreach的函数效果,对一组数组数据进行循环输出。如果你在php中组装好了一个要用到的数组,那么loop将是您最佳的显示标签。

6.  <!–{eval $forum=$forumlist[$forumid];}–>
以eval开始的标签,将直接将后面的代码作为php执行语句原样输出。

=======================
常用的模板语句:

一、直接输出变量: {$abc}或 {echo $abc}
二、输出数组中某个变量:{$arr[0]}
三、IF判断语句:
<!–{if $abc < 1}–>
我abc小于1
<!–{elseif $abc == 1}–>
我abc为1
<!–{else}–>
我abc大于1
<!–{/if}–>

四、Loop循环语句:
<!–{loop $abc $key $val}–>
这里是 {$val}
<!–{/loop}–>

上面这段loop语句,DZ会将其转换成php自身的循环语句:
If(is_array($abc)) {
      Foreach($abc AS $key => $val) {
        }
}

五、在模版文件中使用PHP语句:{eval $abc = 1;}注意:这里必须带”;”结尾。

六、在本模板中引用其他的模板: 如我们要包含头部模板文件(header.htm)可以这样写:{subtemplate header}
在模版中使用语言包中的中文语句:{lang xxxxx},在 这里xxxxx就是语言包中任意一个数组的键值。
如:templates/default/templates.lang.php(语 言包)内有下面的数组
$language = array
(
      ‘discuz_lang’ => ‘templates’,

      ‘click_here’ => ‘点击这 里’,
      ‘ban_member’ => ‘禁止’,
      ‘input_invalid’ => ‘填写无 效’,
      ‘title_none’ => ‘无标题’,
      ‘title’ => ‘标题’,
}