Discuz模板標籤解釋
Discuz! 的模板採用近似 PHP 表達式的語法,支持的元素如下:
1. <!--{ ... }-->
邏輯元素包圍符,該符號用於包含條件和循環元素,其中:
<!--{if expr1}-->
statement1
<!--{elseif expr2}-->
statement2
<!--{else}-->
statement3
<!--{/if}-->
爲一個典型的條件模板,當條件 expr1 爲真時,顯示模板 statement1 內容;否則當
expr2 爲真時,顯示模板 statement2 內容,否則顯示模板 statement3 的內容.如同
其他語言中的條件控制一樣,其中 <!--{elseif expr}--> 和 <!--{else} --> 是非
必須的.
<!--{loop $array $value)}-->
statement
<!--{/loop}-->
相當於 PHP 的數組循環語句
foreach($array as $value) {
statement
}
而
<!--{loop $array $key $value)}-->
statement
<!--{/loop}-->
相當於 PHP 的數組循環語句
foreach($array as $key => $value) {
statement
}
邏輯元素包圍符在 { } 外面包含了 html 的註釋符號 <!-- -->,除了爲了和信息元素
相區別外,也方便了使用 Dreamweaver 和 Frontpage 之類工具編輯模板的用戶.因邏
輯元素會被識別爲 html 的註釋而不被顯示,對於絕大多數用戶,邏輯元素中的內容是
完全不需要修改的,甚至修改錯一個字符就可能引起錯誤信息和整個系統無法運行.因
此通常您在修改模板的時候,不要修改模板的邏輯信息,更不要將邏輯信息內部元素(如
<!--{else}--> 等)的位置,否則可能會導致錯誤.如果您的模板被不慎修改損壞,請立
即用原始模板覆蓋,即可恢復.
對於高手而言,實際上外部的 <!-- --> 是可以省略不寫的,可以用於某些元素在模板
中的定位,但強烈建議普通用戶不要輕易嘗試.
2. { ... }
信息元素包圍符,其中
{CONSTANT}
可以引用界面替換變量,其中必須爲大寫字母,該符號實際的作用是引用 PHP 常量
CONSTANT,因此也可以通過它來引用其他的常量內容.
{lang variable}
可以在模板中引用語言變量 variable 的內容,語言變量經由 templates.php.lang
中數組 $language 定義.
如 {lang post_edit} 的內容在編譯模板的時候被替換爲 $language[\\\'post_edit\\\']
的內容,簡體中文版的意思是 \\\"編輯帖子\\\".
{faq variable}
可以在模板中引用 論壇幫助 的幫助關鍵字,在後臺=>其他設置=》論壇幫助=》具體某個幫助的詳情可以看到或者設置
3. {template name}
模板嵌入符,爲了避免模板的冗長,可以使用本符號來將 name 模板的內容嵌入本模板
中(實際上爲引用).
4. {eval statement}
運行 PHP 語句體 statement.推薦只在特別必須的時候才使用該結構,因爲它會破壞
模板的結構和可讀性.
如 {eval echo \\\'template\\\';} 實現的功能爲 echo \\\'template\\\';
5. {LF}
換行符,因爲 Discuz! 模板引擎會忽略掉多於的換行行(\\\\n),這個符號用來成生需要
的 \\\\n.
6. {echo variable}
實現的功能爲 echo, 注意這個和直接在模板寫變量{$variable} 的區別是這個把echo後面的當成一個語句執行完成後才輸出;
看一個具體的例子:
{echo $i + 1} 編譯後 <? echo $i+1; ?>
$i + 1 編譯後 <?=$i?> + 1
7. {block variable}statement{/block}
實現的功能爲 $variable = <<<EOF
statement
EOF;
這個對於塊賦值非常的有用。