微擎本質(zhì)是一套后臺(tái)管理系統(tǒng), 因此沒(méi)有預(yù)留風(fēng)格切換的功能(并且也完全沒(méi)有這個(gè)必要). 系統(tǒng)風(fēng)格定義于 ./themes/default/ 中. 按照功能點(diǎn)不同定義于各自的子文件夾中. 在進(jìn)行模塊開發(fā)的過(guò)程中盡量不要改動(dòng)系統(tǒng)風(fēng)格, 以方便升級(jí)時(shí)保證向后兼容. 所有的模板緩存均被解析成php文件存放在 ./data/tpl 中, 以 “模板標(biāo)示符.tpl.php”形式保存. 頁(yè)面緩存刷新原理: 當(dāng)開發(fā)者編輯過(guò)模板文件之后, 模板解析器會(huì)匹配模板html文件與緩存php文件的最后修改時(shí)間, 如過(guò)模板html文件較新或無(wú)緩存文件, 則更新或生成緩存, 不新, 則不采取任何動(dòng)作. 手動(dòng)刪除此目錄的緩存不會(huì)影響系統(tǒng)的整體運(yùn)行, 模板緩存仍然會(huì)進(jìn)行自動(dòng)生成. PHP中使用 template() 函數(shù)顯示已存在模板在PHP代碼中展示模板頁(yè)請(qǐng)使用 template() 函數(shù), 在開發(fā)模塊時(shí)模塊內(nèi)部應(yīng)該使用 $this->template() 函數(shù), 這兩個(gè)函數(shù)是用方式完全相同, 只是開發(fā)模塊時(shí)特定模塊的模板定義于當(dāng)前模塊文件夾內(nèi)部(請(qǐng)參閱 "模塊開發(fā)指南"). 此方法定義如下: mixed function template(string $filename, int $flag = TEMPLATE_DISPLAY)- 說(shuō)明: 展示特定模板內(nèi)容
- 參數(shù):
$filename 模板名稱, 格式為: '模板文件夾/模板名稱無(wú)后綴', 如: common/header $flag 模板展示方式 - $flag含義: TEMPLATE_DISPLAY 導(dǎo)入全局變量, 渲染并直接展示模板內(nèi)容(默認(rèn)值)
TEMPLATE_FETCH 導(dǎo)入全局變量, 渲染模板內(nèi)容, 但不展示模板內(nèi)容, 而是將其作為返回值獲取. 可用于靜態(tài)化頁(yè)面. TEMPLATE_INCLUDEPATH 不導(dǎo)入全局變量, 也不渲染模板內(nèi)容, 只是將編譯后的模板文件路徑返回, 返回的模板編譯路徑可以直接使用 include 嵌入至當(dāng)前上下文. - 示例: 以下三種調(diào)用方式效果相同
$list = array(); ... // 其他更多上下文數(shù)據(jù) template('common/template'); //直接展示模板 $content = template('common/template', TEMPLATE_FETCH); //獲取模板渲染出的內(nèi)容 echo $content; //輸出渲染的內(nèi)容 include template('common/template', TEMPLATE_INCLUDEPATH); //嵌入模板編譯路徑
微擎模板語(yǔ)法微擎模板使用模板標(biāo)記來(lái)嵌入變量和實(shí)現(xiàn)簡(jiǎn)單的邏輯語(yǔ)法, 當(dāng)前支持的模板標(biāo)記包括以下: 變量輸出 - {$var}- 說(shuō)明: 使用花括號(hào)包含的變量將直接輸出至頁(yè)面, 功能等同于
<?php echo $var;?> - 轉(zhuǎn)義: 一般情況模板引擎能自動(dòng)識(shí)別 javascript 中的花括號(hào)和變量輸入的花括號(hào). 如果遇到程序不能自動(dòng)分辨的情況可以強(qiáng)制使用 "{##" 符號(hào)來(lái)代表 "{", 使用 "##}" 符號(hào)來(lái)代表 "}".
- 特殊情況: 變量輸出語(yǔ)法同時(shí)支持直接輸出數(shù)組元素或嵌套數(shù)組元素, 例如:
{$row['name']} {$_W['member']['username']}
條件語(yǔ)法 - {if condition}{/if}- 說(shuō)明: 使用條件語(yǔ)法能實(shí)現(xiàn)等同于if的條件分支判斷.
- 邏輯語(yǔ)句: if后可以跟使用邏輯運(yùn)算符連接起來(lái)的多條邏輯語(yǔ)句, 例如: {if $row['flag'] == '-1' && $row['role'] != 'admin'}被禁用{/if}
- else語(yǔ)句: 可以使用 {else} 來(lái)擴(kuò)充條件判斷, 例如:
{if $row['role'] == 'admin'} 管理員 {else} 普通用戶 {/if} - 多條件判斷: 可以使用 {else if condition} 來(lái)進(jìn)行多個(gè)條件的判斷, 例如:
{if $row['role'] == 'founder'} 創(chuàng)始人 {else if $row['role'] == 'admin'} 管理員 {else} 普通用戶 {/if}
循環(huán)語(yǔ)法 - {loop $list $row}- 說(shuō)明: 使用循環(huán)語(yǔ)法能夠遍歷某個(gè)集合的內(nèi)容. 示例:
{loop $wechats $wechat} <li>Name: {$wechat['name']}</li> {/loop} - 擴(kuò)展語(yǔ)法: 可以使用擴(kuò)展的語(yǔ)法 {$loop $list $key $wechat} 來(lái)遍歷集合的鍵名和鍵值, 例如:
{loop $wechats $weid $wechat} <li>Id: {$key}; Name: {$wechat['name']}</li> {/loop}
模板嵌套 - {template $name}- 說(shuō)明: 在模板的當(dāng)前位置嵌入另一個(gè)模板, 例如: 使用 {template common/header} 來(lái)嵌入標(biāo)準(zhǔn)頁(yè)頭.
PHP語(yǔ)法嵌入 - {php statement}- 說(shuō)明: 以上定義的模板語(yǔ)法已經(jīng)能夠?qū)崿F(xiàn)大部分的頁(yè)面嵌入情況, 如遇到不能滿足需要的情況可以使用 PHP 語(yǔ)法嵌入標(biāo)記, 例如:
{php echo date('Y-m-d H:i:s', $row['dateline']);}
數(shù)據(jù)獲取標(biāo)簽 - {data module="" func="" return="" item="" limit="" assign=""}{/data}- func - 指定獲取數(shù)據(jù)的函數(shù),此函數(shù)定義在模塊目錄下的model.php文件中
- module - 指定獲取數(shù)據(jù)的模塊。
- assign - 指定該標(biāo)簽得到數(shù)據(jù)后,存入的變量名稱。如果為空則存在與func同名的變量中,方便在下方的代碼中使用。
- item - 指定循環(huán)體內(nèi)的迭代時(shí)的變量名。相當(dāng)于
foreach ($foo as $i => $row) 中 $row變量。 - limit - 指定獲取變量時(shí)條數(shù)。
- return - 為true時(shí),獲取到數(shù)據(jù)后直接循環(huán)輸出,為false時(shí),獲取到數(shù)據(jù)后作為變量返回。默認(rèn)為false
- 目前支持的獲取數(shù)據(jù)func
- {data func="siteslidesearch"} 獲取微站幻燈片
說(shuō)明: 獲取出4條幻燈片數(shù)據(jù),示例:
{data module="" func="site_slide_search" return="" item="row" limit="4"} <li>Name: {$row['name']}</li> {/data} - {data func="site_article" cid=$cid return="true" assign="result" iscommend="true" ishot="true"}
說(shuō)明: 根據(jù)當(dāng)前分類$cid獲取文章列表,把數(shù)據(jù)存放在result變量中。此數(shù)組中包含list數(shù)據(jù)和pager數(shù)據(jù),iscommend 表示推薦文章,ishot表示熱門文章。此標(biāo)簽可同時(shí)使用,也可單個(gè)使用。示例:{data module="site" func="site_article" cid=$cid return="true" assign="result"} {loop $result['list'] $row} <li><a href="{$row['url']}">{$row['title']}</a></li> {/loop} {$result['pager']} - {data func="site_category" parentid="0"}
說(shuō)明:獲取當(dāng)前分類列表,parentid指定獲取某個(gè)分類的子類。parentid為0是則獲取所有的父分類,默認(rèn)是獲取全部分類,示例:
{data module="site" func="site_category"}{$row['name']}{loop $row['children'] $item}{$item['name']}{/loop}{/data}
|