11.JIEQI CMS模板 - 2.賦值變量形式
二、賦值變量形式
1、任何變量必須是 $ 符號開頭的一個只能包含英文數(shù)字和下劃線的字符串,如 {?$my_var?}。
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', 'test string');
模板:
{?$var?}
輸出:
test string
---------------------------------------------------------------------
2、變量如果是數(shù)組的話,模板里面可以這樣表示,如 {?$ary['key']?}、{?$ary['0']['1']?}。方括號里面變量要加上單引號。另外還支持一種表示方法,上面的兩個變量可寫成 {?$ary.key?}、{?$ary.0.1?}。一般建議使用前一種,比較符合編程規(guī)范。
例子:
---------------------------------------------------------------------
程序:
$ary = array('a'=>'str_a', 'b'=>'str_b', 'c'=>array('0'=>'c_0', '1'=>'c_1'));
$jieqiTpl->assign('ary', $ary);
模板:
{?$ary['a']?} | {?$ary.b?} | {?$ary['c']['1']
輸出:
str_a | str_b | c_1
---------------------------------------------------------------------
3、如果變量是數(shù)組時候,里面的鍵值也是變量,則可以寫成 {?$ary[$key]?}
例子:
---------------------------------------------------------------------
程序:
$key = 'b';
$ary = array('a'=>'str_a', 'b'=>'str_b');
$jieqiTpl->assign('key', $key);
$jieqiTpl->assign('ary', $ary);
模板:
{?$ary[$key]?}
輸出:
str_b
12.JIEQI CMS模板 - 3.變量調(diào)節(jié)器
三、變量調(diào)節(jié)器
模板變量支持多種調(diào)節(jié)函數(shù)來改變輸出效果,模板標(biāo)簽格式為 {?$var|function:var1:var2?}
變量名之后用 |分隔,然后是函數(shù)名字,再后面是函數(shù)的參數(shù),每個參數(shù)用 : 分隔,參數(shù)是字符串時候建議用雙引號來包括。
常用變量調(diào)節(jié)器如下:
1、truncate - 截取固定長度字符串,參數(shù)一(必要):截取后長度,參數(shù)二:附加字符串。
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', '123456789');
模板:
{?$var|truncate:5?} | {?$var|truncate:5:".."?}
輸出:
12345 | 123..
---------------------------------------------------------------------
2、subdirectory - JIEQI CMS 里面專用于生成子目錄名字的函數(shù),針對數(shù)字的處理,無參數(shù)。輸出格式類似 "/12",其中"/" 是表示開始一個子目錄,"12"是子目錄名字。
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('id', 3456);
模板:
/files/article/html{?$id|subdirectory?}/{$id?}/index.html
輸出:
/files/article/html/3/3456/index.html
---------------------------------------------------------------------
3、date - 把數(shù)字類型的時間格式化成字符串,參數(shù)一:格式化字符串
格式化字符含義主要有以下幾個:
Y - 四位的年份,如 2007
y - 二位年份,如 07
m - 二位月份,不足補(bǔ)零,從 01 到 12
n - 月份,不補(bǔ)零,從 1 到 12
d - 二位的天數(shù),不足補(bǔ)零,從 01 到 31
j - 天數(shù), 不補(bǔ)零, 從 1 到 31
H - 二位24小時格式,從 00 到 24
h - 二位12小時格式,從 00 到 12
G - 24小時格式,從 0 到 24
g - 12 小時格式,從 0 到 12
i - 二位分?jǐn)?shù),從 00 到 59
s - 二位秒數(shù),從 00 到 59
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('time', 1198226131);
模板:
{?$time|date:"Y-m-d H:i:s"?}
輸出:
2007-12-21 16:35:31
---------------------------------------------------------------------
4、str_replace - 字符串替換,參數(shù)一:查找的字符串,參數(shù)二:替換為字符串
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', 'http://www.jieqi.com');
模板:
{?$var|str_replace:"www":"demo"?}
輸出:
http://demo.jieqi.com
---------------------------------------------------------------------
5、urlencod,urldecode - 分別是把字符串進(jìn)行url編碼和解碼,于在url傳遞變量情況,無參數(shù)
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', 'http://www.jieqi.com');
模板:
{?$var|urlencode?}
輸出:
http%3A%2F%2Fwww.jieqi.com
---------------------------------------------------------------------
6、strlen - 計算字符串長度,無參數(shù)
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', 'abcd');
模板:
{?$var|strlen?}
輸出:
4
---------------------------------------------------------------------
7、default - 變量為空的時候默認(rèn)輸出的值,參數(shù)一:默認(rèn)值
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', 'abcd');
$jieqiTpl->assign('var1', '');
模板:
{?$var|default:"empty"?} | {?$var1|default:"empty"?}
輸出:
abcd | empty
---------------------------------------------------------------------
8、sprintf - 格式化輸出,參數(shù)一:格式化規(guī)則
本函數(shù)參數(shù)是一個字符串,里面可以是任意要輸出的字符串,用 % + 類型標(biāo)志 來表示當(dāng)前變量格式
常用格式為
%d - 表示數(shù)字類型
%06d - 表示顯示6位長度的數(shù)字類型,位數(shù)補(bǔ)足前面補(bǔ)0
%s - 表示字符串類型
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', 123);
模板:
{?$var|sprintf:"%06d"?} | {?$var1|sprintf:"The number is %s"?}
輸出:
000123 | The number is 123
13.JIEQI CMS模板 - 4.判斷語句
四、判斷語句
模板里面的斷語句主要由 {?if ...?},{?else?}, {?elseif ...?} 和 {?/if?} 這幾個標(biāo)記配合比較語句組成。
一個完整判斷語句由 {?if ...?} 開頭 {?/if?} 結(jié)束,比較符號包括 ==(等于),!=(不等于),>(大于),<(小于),<=(小于等于),>=(大于等于)。
判斷語句里面支持簡單的四則運(yùn)算,包括 +(加),-(減), *(乘), /(除), %(取余)。
例子:
---------------------------------------------------------------------
程序:
$jieqiTpl->assign('var', 50);
模板:
{?if $var > 40?}big{?else?}small{?/if?}
{?if $var % 5 == 0?}yes{?else?}no{?/if?}
輸出:
big
yes
15.JIEQI CMS模板 - 5.循環(huán)語句
五、循環(huán)語句
循環(huán)語句由 {?section name=i loop=$var columns=1?} 開頭,{?/section?} 結(jié)束。
name=i 的 i 是循環(huán)時候的中間變量名(名稱可以自由設(shè)置,不能和其他變量同名)。
loop=$var 的 $var 是實際內(nèi)容數(shù)組。
columns=1 的 1 是指循環(huán)的時候分成幾列,可以不寫這部分,默認(rèn)為一列。這個參數(shù)主要用于生成多行多列的表格,當(dāng)這個參數(shù)大于1的時候,程序會自動把循環(huán)次數(shù)補(bǔ)足成列的倍數(shù)。比如內(nèi)容數(shù)組一共有6個值,默認(rèn)循環(huán)六次,如果要生成四列的表格,那么循環(huán)就會變成8次,這樣正好生成4列2行的表格。
在實際使用中,name 后面的變量也會被轉(zhuǎn)換成一個數(shù)組,在每次循環(huán)里面會相應(yīng)賦值。如前面的寫法,模板里面變量標(biāo)簽是 $i 的一個數(shù)組,包含以下內(nèi)容
固定參數(shù)部分:
$i['columns'] - 當(dāng)前循環(huán)是幾列的模式。
$i['count'] - 內(nèi)容數(shù)組的單元個數(shù)
$i['addrows'] - 多列的時候,附加的循環(huán)次數(shù)
$i['loops'] - 總的循環(huán)次數(shù)
循環(huán)變量部分:
$i['key'] - 當(dāng)前數(shù)組單元的鍵值。
$i['value'] - 當(dāng)前數(shù)組單元內(nèi)容
$i['index'] - 循環(huán)的內(nèi)部序號,從0開始,逐個遞增
$i['order'] - 循環(huán)的排序,從1開始,逐個遞增
$i['row'] - 當(dāng)前是第幾行,從1開始
$i['column'] - 當(dāng)前是第幾列,從1開始
$i['append'] - 當(dāng)前循環(huán)是不是附加循環(huán),0 表示否,1 表示是
例子1:單列循環(huán)
---------------------------------------------------------------------
程序:
$var=array('a', 'b', 'c', 'd', 'e');
$jieqiTpl->assign('var', $var);
模板:
{?section name=i loop=$var?}
($var[$i['key']])
{?/section?}
輸出:
(a)(b)(c)(d)(e)
備注:上面 $var[$i['key']],$i['value'] 這兩種方式表達(dá)的值是一樣的,另外兼容老版的表達(dá)方式 $var[i]
---------------------------------------------------------------------
例子2:多列循環(huán)
---------------------------------------------------------------------
程序:
$var=array('a', 'b', 'c', 'd', 'e');
$jieqiTpl->assign('var', $var);
模板:
<table width="100%" border="1">
{?section name=i loop=$var columns=3?}
{?if $i['column'] == 1?}<tr>{?/if?}
<td>{?$i['order']?}.{?if $i['append'] == 0?}{?$var[$i['key']]?}{?else?} {?/if?}</td>
{?if $i['column'] == $i['columns']?}</tr>{?/if?}
{?/section?}
</table>
輸出:
<table width="100%" border="1">
<tr>
<td>1.a</td>
<td>2.b</td>
<td>3.c</td>
</tr>
<tr>
<td>4.d</td>
<td>5.e</td>
<td>6. </td>
</tr>
</table>
備注:
{?section name=i loop=$var columns=3?} 開始循環(huán),按照3列的模式生成
{?if $i['column'] == 1?}<tr>{?/if?} 每行開始第一列時候,前面加上 <tr> 標(biāo)記
{?if $i['column'] == $i['columns']?}</tr>{?/if?} 每行到最后一列時候,后面加上 </tr> 標(biāo)記
{?$i['order']?} 數(shù)字序號,從1開始遞增
{?if $i['append'] == 0?}{?$var[$i['key']]?}{?else?} {?/if?} 如果不是附加字段,則直接輸出內(nèi)容,否則輸出
16.JIEQI CMS模板 - 6.頁面顯示相關(guān)配置
六、頁面顯示相關(guān)配置
JIEQI CMS 里面一個頁面通常可以有三部分組成,頁面框架、主體內(nèi)容和一定數(shù)量的區(qū)塊。
1、頁面框架用于確定整體頁面格局,主要包含了頁面頂部內(nèi)容(如:logo、banner、導(dǎo)航鏈接)、頁面底部內(nèi)容(如:網(wǎng)站聲明)、以及中間內(nèi)容部分的結(jié)構(gòu)(如:分成左中右三列)。系統(tǒng)默認(rèn)所有的動態(tài)程序頁面輸出都使用同一個框架模板,這樣的好處是整站風(fēng)格統(tǒng)一,并且比較容易修改。
默認(rèn)的框架模板在網(wǎng)站的 /themes 目錄下,每個子目錄表示一種網(wǎng)站風(fēng)格,系統(tǒng)使用那種風(fēng)格,在后臺系統(tǒng)定義里面把風(fēng)格名稱設(shè)置成子目錄名即可(如:jieqidiv)。
一套標(biāo)準(zhǔn)的風(fēng)格模板主要包含以下幾個文件:
theme.html - 頁面框架模板,適用整個系統(tǒng),修改網(wǎng)站風(fēng)格也主要是修改本文件。
style.css - 通用的css,在theme.html里面調(diào)用的,也是整站通用。
jumppage.html - 程序跳轉(zhuǎn)頁面模板,比如用戶登錄時候,那個跳轉(zhuǎn)過渡的小窗口。
msgbox.html - 內(nèi)容提示方塊模板,通常這個提示信息是指插入到其他頁面的。
msgwin.html - 內(nèi)容提示頁面模板,跟msgbox.html不同,這是一個完整的提示頁面。
msgerr.html - 錯誤信息提示模板,也是一個完整的提示頁面。
2、主體內(nèi)容部分是指本頁面主要顯示的數(shù)據(jù),通常用一個單獨(dú)的模板。如用戶登錄后,打開個人資料頁面,個人資料的表格就是主體內(nèi)容部分,頭尾都套用頁面框架,而左側(cè)的“用戶設(shè)置”、“短消息”、“工具箱”則是本頁調(diào)用的區(qū)塊。
主體內(nèi)容模板,系統(tǒng)功能部分模板就在網(wǎng)站的 /templates 目錄下,而其他模塊的模板在 /modules/模塊名/templates 目錄,如小說連載模塊是 /modules/article/templates, 論壇模塊是 、/templates/forum/templates。
內(nèi)容模板的命名規(guī)則基本和對應(yīng)的程序相關(guān)聯(lián),后綴名是 .html
如:
/userdetail.php 對應(yīng)模板 /templates/userdetail.html
/modules/article/articleinfo.php 對應(yīng)模板 /modules/article/templates/articleinfo.html
3、區(qū)塊是一些內(nèi)容小方塊,如果用戶登錄區(qū)塊,排行榜區(qū)塊。所有區(qū)塊都允許在網(wǎng)站任何頁面調(diào)用。在一個頁面調(diào)用區(qū)塊主要有三種模式:
3.1 標(biāo)準(zhǔn)的框架 + 區(qū)塊配置文件:這種是默認(rèn)的顯示模式,框架部分使用系統(tǒng)默認(rèn)的,而一個頁面顯示幾個區(qū)塊和區(qū)塊放在什么位置皆在區(qū)塊配置文件之中。調(diào)整區(qū)塊位置和區(qū)塊數(shù)量只需要調(diào)整這個配置文件。
3.2 定制的頁面模板 + 區(qū)塊配置文件:這種模式調(diào)用哪幾個區(qū)塊仍舊在區(qū)塊配置文件中,而區(qū)塊顯示位置由模板里面直接控制,通常定制頁面就用這種方法。
3.3 直接在模板中設(shè)置區(qū)塊及參數(shù),不使用區(qū)塊配置文件:這種就相當(dāng)于把模板和區(qū)塊配置合并一起了,任何調(diào)整都修改這個模板。
17.JIEQI CMS模板 - 7.頁面定制(一)
七、頁面定制
1、定制一個頁面,不使用系統(tǒng)框架,通常用于設(shè)計一個獨(dú)立的頁面,不使用系統(tǒng)默認(rèn)的導(dǎo)航,但是可能需要系統(tǒng)變量或者調(diào)用系統(tǒng)區(qū)塊。
主要程序部分如下:
<?php
define('JIEQI_MODULE_NAME', 'system'); //定義本頁面屬于那個模塊
require_once('global.php'); //包含通用程序,每個頁面必須高喊
jieqi_getconfigs(JIEQI_MODULE_NAME, 'blocks'); //包含區(qū)塊參數(shù),如果需要在頁面調(diào)用區(qū)塊的話
//本函數(shù)第一個書模塊名,第二個是區(qū)塊配置文件名,配置文件皆在 /configs 目錄下,如上例對應(yīng)的文件是 /configs/blocks.php
$jieqi_page_template=JIEQI_ROOT_PATH.'/templates/custom.html'; //設(shè)置該頁面的模板文件
include_once(JIEQI_ROOT_PATH.'/header.php'); //包含頁頭處理
$jieqiTpl->assign('jieqi_indexpage',1); //設(shè)置首頁標(biāo)志,不是首頁請注釋本語句,便于模板里面可以判斷,給模板其他參數(shù)賦值也用這個方法
include_once(JIEQI_ROOT_PATH.'/footer.php'); //包含頁尾處理
?>
模板部分可以使用系統(tǒng)標(biāo)簽,如 {?$jieqi_url?}
也可以在載入?yún)^(qū)塊配置的前提下,在模板適當(dāng)位置加入顯示區(qū)塊的標(biāo)簽,標(biāo)簽寫法如下:
區(qū)塊的標(biāo)題調(diào)用方式為 {?$jieqi_pageblocks['bidXXX']['title']?} 里面的 XXX 是指實際的區(qū)塊序號,可以在區(qū)塊管理里面看到,或者在區(qū)塊配置文件中對應(yīng)的 bid。
區(qū)塊內(nèi)容的調(diào)用方式為 {?$jieqi_pageblocks['bidXXX']['content']?} 規(guī)范跟標(biāo)題相同。