聯系電話:020-28187900

K9模板標簽

發表時間:2015-01-14 閱讀: 7322

模板標簽是把復雜的PHP語言轉換為容易編寫和容易記憶的另一種形式的語言。

標簽對照

K9模板標簽是經過K9模板引擎解析之后完成輸出代碼。
K9模板標簽雖也是用大括號括起來,但和KingCMS v6的標簽有一定的區分。見下面的對照表:

HTML標簽KingCMS v6標簽K9模板標簽
<br/>{King:Title/}{$title}
<img src="images/logo.gif" />{King:Title size="3" /}{$title size="3"}
<span class="cls" >
    KingCMS
</span>
{king:portal.article listid='3'}
    {king:title/}
{/king:portal.article}
{@res table='%s_user' field='userid,username'
          where='status=1' order='userid desc'}
    {#foreach ($res as $rs)}
        {$rs[username]}
    {#endforeach}

模板注釋符號約定

K9模板注釋為:<!--- 這里是注釋內容部分 --->

兩邊比HTML注釋多一個中劃線(3個以上都可以),可以跟HTML注釋一樣被可視化編輯器默認。

不同點: <!-- HTML注釋 -->是通過模版引擎編譯后會顯示出來,K9模板注釋不會被顯示到客戶端瀏覽器。

模板引用文件約定

引用模板文件- [include 和 require],

{#include file=’include/top.php’}

file是文件路徑,其值為相對于當前被應用的模板目錄路徑。
被引用的文件也會被正常解析標簽。
同時可以用require別名,效果同上:

{#require file=’include/top.php’}

具體見:點擊這里

標簽屬性

size屬性

用來設置截取指定長度的文本。

{$title size='10'}

在原{$title}的值中取前10個字符,并且字符長度大于10的時候,補充省略號;size值必須為數字,英文字母按一個字符計算,一個漢字或全角標點符號按兩個字符計算,也就是說size=‘10’代表著顯示前5個中文漢字或者10個英文字母。

cache屬性

數據查詢標簽專用,可以為每個標簽調用的數據設置緩存時間。恰當的運用cache屬性是提高模板解析效率的一個捷徑。

{@res.search table='%s_content'
        field='id,title,description,url'
        fulltext='ft_content'
        where='status=1'
        order='temp_score desc,id desc'
        number='10'
        cache='600'}
{#foreach($res as $rs)}
        <a href="{DIR}{$rs[url]}">{$rs[title]}</a>
{#endforeach}

搜索標簽{@res.search}是cache最常見的情景,屬性值,標注*的是必須填寫的屬性值

  • * table:要查詢的數據庫表名
  • * field:要顯示的字段列表,不能用*,必須填寫
  • * fulltext:全文檢索字段
  • where:條件檢索
  • order:排序方式
  • number:搜索結果每頁顯示數,默認為20
  • cache:以秒為單位,設置該標簽調用數據的緩存時間
code屬性

用來轉換數據輸出格式。code屬性值有:

  • html(同htmldecode)
  • quote
  • url(同urlencode)
  • nl2br
  • ip
  • json

各自的功能如下:

屬性值作用
html禁止htmlencode轉換,默認是做轉換,同:htmldecode
quote刪除雙引號等,可以用在html屬性值里
urlurlencode轉換,傳遞URL的時候用到,同:urlencode
nl2br回車符換成<br/>,在html頁面中正常顯示換行。
ip把long格式的ip地址轉換為 255.255.255.* 樣式的地址
json數組轉換為json格式,停止htmlencode轉換
{$system.bottom code='html'} 或 {$title code='htmldecode'}

默認輸出的所有標簽是經過htmlencode轉換了的,這樣可以安全過濾掉用戶提交的不安全的html代碼,但一些特殊的文本段是不能轉換的,比如頁腳html代碼、統計器代碼或html編輯器中提交的內容,這個時候需要指定一下code值為html;必須要區分的是,這個和先前版本的屬性的意義是正好相反。

{$title code='quote'}

當標簽在html代碼屬性里需要用到的時候,指定一下quote,以免在數據中帶有雙引號等特殊符號的時候,發生錯誤。也可以用php的htmlspecialchars函數,但這個函數會把雙引號換成&quot;,并不利于SEO優化。舉例:
<img src="{$image}" alt="{$title code='quote'}"/>

{$_GET- ['q'] code='url'} 或 {$title code='urlencode'}

部分瀏覽器不支持直接傳遞中文,這個時候需要做urlencode轉換,主要用處是傳遞到url參數時候用到。
<a href="{DIR}/?q={$_GET- [q] code='url'}">搜索關鍵詞</a>

date屬性

日期格式轉換。

{$date date="Y-m-d H:i:s"}

格式化時間戳格式的日期為可讀的標準日期格式,因為KingCMS的系統中的日期均是以數字形式的時間戳來存儲的,輸出顯示的時候,必須做轉換,否則直接讀取的是十位數的數字。上面例子中的Ymd依次代表完整年份、月份和日期,詳細對照表如下。

format 字符說明返回值例子
d月份中的第幾天,有前導零的 2 位數字01 到 31
D星期中的第幾天,文本表示,3 個字母Mon 到 Sun
j月份中的第幾天,沒有前導零1 到 31
l星期幾,完整的文本格式Sunday 到 Saturday
NISO-8601 格式數字表示的星期中的第幾天(PHP 5.1.0 新加)1(表示星期一)到 7(表示星期天)
S每月天數后面的英文后綴,2 個字符st,nd,rd 或者 th。可以和 j 一起用
w星期中的第幾天,數字表示0(表示星期天)到 6(表示星期六)
z年份中的第幾天0 到 366
星期
WISO-8601 格式年份中的第幾周,每周從星期一開始(PHP 4.1.0 新加的)例如:42(當年的第 42 周)
F月份,完整的文本格式,例如 January 或者 MarchJanuary 到 December
m數字表示的月份,有前導零01 到 12
M三個字母縮寫表示的月份Jan 到 Dec
n數字表示的月份,沒有前導零1 到 12
t給定月份所應有的天數28 到 31
L是否為閏年如果是閏年為 1,否則為 0
oISO-8601 格式年份數字。這和 Y 的值相同,只除了如果 ISO 的星期數(W)屬于前一年或下一年,則用那一年。(PHP 5.1.0 新加)Examples: 1999 or 2003
Y4 位數字完整表示的年份例如:1999 或 2003
y2 位數字表示的年份例如:99 或 03
時間
a小寫的上午和下午值am 或 pm
A大寫的上午和下午值AM 或 PM
BSwatch Internet 標準時000 到 999
g小時,12 小時格式,沒有前導零1 到 12
G小時,24 小時格式,沒有前導零0 到 23
h小時,12 小時格式,有前導零01 到 12
H小時,24 小時格式,有前導零00 到 23
i有前導零的分鐘數00 到 59
s秒數,有前導零00 到 59
時區
e時區標識(PHP 5.1.0 新加)例如:UTC,GMT,Atlantic/Azores
I是否為夏令時如果是夏令時為 1,否則為 0
O與格林威治時間相差的小時數例如:+0200
T本機所在的時區例如:EST,MDT(【譯者注】在 Windows 下為完整文本格式,例如“Eastern Standard Time”,中文版會顯示“中國標準時間”)。
Z時差偏移量的秒數。UTC 西邊的時區偏移量總是負的,UTC 東邊的時區偏移量總是正的。-43200 到 43200
日期
cISO 8601 格式的日期(PHP 5 新加)2004-02-12T15:19:21+00:00
rRFC 822 格式的日期例如:Thu, 21 Dec 2000 16:01:07 +0200
U從 Unix 紀元(January 1 1970 00:00:00 GMT)開始至今的秒數

在格式字串中的字符前加上反斜線來轉義可以避免它被按照上表解釋。如果加上反斜線后的字符本身就是一個特殊序列,那還要轉義反斜線。

pagelist屬性

分頁標簽。

{$res_pagelist code='html'}

此標簽默認值為:

<p class="k_pagelist">[$standard][$next]</p>

分頁標簽只適用于查詢類標簽,且讀取類型為:{[email protected]/get/join/one_join/two/select/select_join/count/search/related}

分頁標簽包含子元素,其對應關系如下:

  • [$standard] 輸出1 2 3 4 5 6 7 8 9 … 198 199 ,帶鏈接的路徑
  • [$next] 輸出Next > ,跳到下一頁,并不是最后一頁的時候,帶上鏈接
  • [$previous] 輸出 < Previous ,跳到前一頁,不是在第一頁的時候,帶上鏈接
  • [$first] 輸出 << First ,跳到首頁,不是第一頁的時候,帶上鏈接
  • [$last] 輸出 Last >> ,跳到最后一頁, 不是最后一頁的時候,帶上鏈接
  • [$pcount] 總頁數
  • [$count] 記錄總數
  • [$pid] 當前頁數
  • [$rn] 每頁顯示記錄數

生成縮略圖屬性

縮略圖的調用參數

范例:

{$rs[image] width='200' height='400' background='#FFFAAA' }
  • width:圖片縮略圖寬度,單位值為px

  • height:指定縮略圖高度

  • background:指定背景色,當不指定這個URL參數的時候,圖片會以中間為中心,裁減多余的圖,這個時候需要用到position來定位(見下面);若指定背景色,則自動按比縮小,并且多余的空白處用指定的顏色填充,顏色值必須為標準十六進制顏色值,可以不帶#號,如:#EEEEEE 或 FFF000,不支持red等命名形式的顏色值。

  • position:切圖 ,其取值有:

取值作用
center從中心為基點,裁掉左右或上下多出來的部分
top以頂部為基點,裁掉下面部分
left以左側為基點,裁掉右側部分
right以右側為基點,裁掉左側部分
bottom以底部為基點,裁掉上面部分
lefttop以左上角為基點,裁掉右側和下面多出來的部分,也可以寫
topleft同上,為了防止混淆,top和left部分順序
righttop參考上面lefttop和topleft例子
leftbottom同上
bottomleft同上
X,Y除了如上相對定位外,也可以輸入坐標值的方法來確定裁圖位置
  • padding:畫圖像邊緣線,取值有:
取值作用
rectangle矩形邊緣線
fillet圓倒角邊緣線
chamfer斜倒角邊緣線
  • 邊緣線的子屬性有
取值作用
padding-color邊緣線的色彩,如:#FF0000
padding-size邊緣線的厚度,默認0
padding-r當指定為圓角或斜倒角邊緣線的時候的半徑值
padding-filter濾鏡類型,shadow:陰影
padding-filter-color濾鏡顏色,默認#666666,即深灰色
  • border:邊框,邊緣線是從外部全部填充指定的進深(padding-size)的結構,邊框并不填充外邊角。取值同padding
取值作用
rectangle矩形邊緣線
fillet圓倒角邊緣線
chamfer斜倒角邊緣線

邊框的子屬性有:

取值作用
border-color邊框顏色,默認黑色:#000000
border-margin邊框進深值,默認0
border-r當邊框類型為圓角邊框或斜切邊框的時候,四個倒角的半徑,默認取值為:5
border-size邊框的寬度,默認為1
縮略圖調用舉例[不裁減縮圖]

當指定background背景顏色值的時候,做自動縮圖處理,邊角會以指定的顏色值填充。

background參數值必須為6位長度的數字和A-F的英文字母組合,不接受#等參數,詳細色彩值請參考網頁顏色表

{$info[image] width='200' height='150' background='#FFFFFF'}

當循環里調用的時候,如下:

{@data table='%s_content'
        field='title,image'
        where='status=1'
        number='5'}
{#foreach($data as $rs)}
<img src="{DIR}{$rs[image]
        width='95'
        height='60'
        background='#FFFFFF'}"
        alt="{$rs['title']
        code='quote'}"/>
{#endforeach}
縮略圖調用舉例[自動裁圖]

當不指定background值的時候,會做自動裁減處理,默認裁減位置是以圖中心為基點,裁減左右和上下相對多出來的圖片部分。

{@data table='%s_content'
        field='title,image'
        where='status=1'
        number='5'}
{#foreach($data as $rs)}
        <!--不指定position,切除四周-->
        <img src="{DIR}{$rs[image]
                width='200'
                height='150'}"
                alt="{$rs[title]}"
                code='quote'}"/>
        <!--切除下面-->
        <img src="{DIR}{$rs[image]
                width='200'
                height='150'
                position='top'}"
                alt="{$rs[title]}"
                code='quote'}"/>
{#endforeach}

靜態標簽

靜態標簽是指KingCMS內部指定的那些PHP常量的標簽,比如安裝目錄的常量參數DIR,在模板中調用的時候是{DIR},當前的模板目錄的常量參數是T,模板里調用的是{T}

當多個常量標簽需要連續寫的時候,如:{DIR}{T},可以簡寫為:{DIR.T}

需要注意的是,常量標簽(即靜態標簽)必須為大寫!

{DIR} <!--程序安裝目錄-->
{T}  <!--當前模板目錄-->
{TIMEZONE}  <!--時區設置-->
{PATH_UP} <!--放置上傳文件的主目錄-->
{PATH_CACHE}  <!--放置緩存文件的目錄-->
{ROOT}  <!--網站根目錄,磁盤里的路徑-->
{PROD}  <!--程序代號-->
{VERSION}  <!--程序版本-->
{VER}  <!--小版本-->
{TIME}  <!--當前時間-->

變量和數組類型標簽

變量類型標簽,必須為當前頁中可以查詢到的標簽,否則出現PHP錯誤。

  • 普通標簽,,支持size/code等屬性值。如:
    • {$title}-當前網頁標題
    • {$keywords}-當前網頁關鍵詞
    • {$description}-當前網頁meta簡述
  • 數組類型變量標簽,如:{$_GET[‘title’]}(可簡寫為:{$_GET[title]})。
  • 系統參數標簽,如:{$site.name},帶.的是系統內置的參數標簽。

其中,更多系統參數標簽如下:

{$site.name}  <!--網站名稱-->
{$site.title}  <!--網站首頁標題-->
{$site.keywords}  <!--網站首頁關鍵詞-->
{$site.description code='quote'}  <!--網站首頁meta簡述-->
{$system.countcode code='html'}  <!--第三方統計代碼-->
{$system.qq}  <!--管理員QQ-->
{$system.tel}  <!--管理員電話-->
{$system.beian}  <!--備案號-->
{$system.image_width}  <!--縮略圖最大寬度值-->
{$system.image_height}   <!--縮略圖最大高度值-->
{$system.bottom code='html'}  <!--網站底部HTML代碼-->

運算標簽

數據統計[@rs.count]
{@fangwu.count table='%s_fangwu' where='status=1'}
{@zhaopin.count table='%s_zhaopin' where='status=1'}

讀取后的結果賦值給數組變量{$fangwu}和{$zhaopin}中,直接輸出其對應內容。

房屋總計:{$fangwu}
招聘總計:{$zhaopin}

屬性值,標注*的是必須填寫的屬性值

  • * table:要讀取的數據庫表名
  • where:條件檢索
語句[foreach循環]

foreach循環標簽是一種遍歷數組簡便方法。foreach 僅能用于數組,當試圖將其用于其它數據類型或者一個未初始化的變量時會產生錯誤。

{#foreach($data as $rs)}
    標題是:{$rs['title']}<br/>
{#endforeach}
語句[for循環]
{#for($i=1;$i<=10;$i++)}
    當前第{$i} 個值
{#endfor}
語句[if判斷]

if判斷標簽允許按照條件執行代碼片段。

{#if ($title=="")}
  標題為啥為空呢?
{#endif}
語句[switch選擇]

switch標簽和if語句相似,很多場合下需要把同一個變量與很多不同的值做比較,并根據它等于哪個值來執行不同的代碼,這正是switch的用處

{#switch ($title)}
    {#case 'apple'}
    蘋果
    {#break}
     {#case 'bar'}

     {#break}
    {#default}
    標題并不是蘋果或梨
{#endswitch}
語句[break 退出循環][continue 跳過本循環]

break標簽結束當前for、foreach或者switch結構的執行。

continue標簽在循環結構用用來跳過本次循環中剩余的代碼并在條件求值為真時開始執行下一次循環。

數據查詢標簽

[循環讀取]{@res}{@res.select}
{@res table='%s_user'
        field='userid,username'
        where='status=1'
        order='userid desc'}

讀取后的結果賦值給數組變量{$res}中,循環顯示{$res}中的內容,即可實現對數據庫表的查詢輸出。

{#foreach ($res as $rs)}
    用戶名是:{$rs[username]} <br/>
{#endforeach}

屬性值,標注*的是必須填寫的屬性值

  • * table:要讀取的數據庫表名
  • field:需要列出的字段名
  • where:條件檢索
  • order:排序方式
  • number:調用數量,如果跳過10條讀取5條,則: number=‘10, 5’

需分頁時

{@res.select table='%s_user'
        field='userid,username'
        where='status=1'
        order='userid desc'
        url='/user/'}
  • url:當前頁面第一頁的地址,不填寫時,系統自動設置。當前內頁路徑請寫:url="{DIR}{$info['url']}"

調用分頁列表:{$res_pagelist}

分頁列表代碼存儲到@XXX.select定義里的”XXX”部分名稱和”_pagelist”變量里。

[單行讀取]{@rs.one}
{@rs.one table='%s_user'
        where='status=1'
        order='userid desc'}

讀取后的結果賦值給數組變量{$rs}中,直接輸出{$rs}數組里的對應內容。

用戶名:{$rs[username]} <br/>
用戶ID:{$rs[userid]}

屬性值,標注*的是必須填寫的屬性值

  • * table:要讀取的數據庫表名
  • field:需要列出的字段名
  • where:條件檢索
  • order:排序方式
[雙值對應讀取]{@res.two}
{@res.two table='%s_user'
        field1='userid'
        field2='username'
        where='status=1'
        order='userid desc'}

讀取后的結果賦值給數組變量{$res}中,循環顯示{$res}的鍵值和值即可實現對此數組的輸出,此時,field1屬性對應的是鍵值,field2屬性對應的是對應值

{#foreach ($res as $userid => $username)}
    用戶名是:{$username}  用戶ID:{$userid} <br/>
{#endforeach}

屬性值,標注*的是必須填寫的屬性值

  • * table:要讀取的數據庫表名
  • * field1:作為鍵值的字段名
  • * field2:作為鍵值對應值的字段名
  • where:條件檢索
  • order:排序方式
  • number:調用數量,如果跳過10條讀取5條,則: number=‘10, 5’
[關聯讀取]{@res.join}{@res.select_join}
{@res.join table1='%s_content' table2='%s_user'
        field1='id,title,url'
        field2='username'
        on='userid'
        where='t1.status=1'
        order='t1.id desc'}

讀取表1的時候,同時讀取被關聯的表里的其他內容,比如上例循環顯示的是content表里的數據,同時根據content表里的userid字段關聯讀取附表user里的username字段,用來顯示對應的用戶名。

讀取返回值是二維數組,賦給數組變量res:

{#foreach ($res as $rs)}
    內容標題:{$rs[title]}
    用戶名是:{$rs[username]}
    鏈接地址:{$rs[url]}<br/>
{#endforeach}

屬性值,標注*的是必須填寫的屬性值,+代表必須同時指定或同時不指定

  • * table1:要讀取的主數據庫表名
  • * table2:被關聯讀取的附數據庫表的名稱
  • + field1:主數據庫表里的字段列表
  • + field2:附數據庫表里的字段列表
  • * on:關聯兩個表用的字段,這個字段兩個表必須得存在
  • where:條件檢索,主表字段前面需要補充t1.,附表是t2
  • order:排序方式,主表字段前面需要補充t1.,附表是t2
  • number:調用數量,如果跳過10條讀取5條,則: number=‘10, 5’

需分頁的時候

{@res.join table1='%s_content' table2='%s_user'
        field1='id,title,url'
        field2='username'
        on='userid'
        where='t1.status=1'
        order='t1.id desc'
        url='/'}

{@res.join}多出一個屬性值

  • url:當前列表第一頁的地址,不指定時,系統自動獲取

調用分頁列表:{$res_pagelist}

分頁列表代碼存儲到@XXX.select定義里的”XXX”部分名稱和”_pagelist”變量里。

[關聯單行讀取]{@rs.one_join}
{@rs.one_join table1='%s_content' table2='%s_user'
        field1='id,title,url'
        field2='username'
        on='userid'
        where='t1.status=1'
        order='t1.id desc'}

讀取表1的時候,同時讀取被關聯的表里的其他內容,比如上例循環顯示的是content表里的數據,同時根據content表里的userid字段關聯讀取附表user里的username字段,用來顯示對應的用戶名。

讀取返回值是一維數組,賦給數組變量{$rs}:

內容標題:{$rs[title]}
用戶名是:{$rs[username]}
鏈接地址:{$rs[url]}

屬性值,標注*的是必須填寫的屬性值,+代表必須同時指定或同時不指定

  • * table1:要讀取的主數據庫表名
  • * table2:被關聯讀取的附數據庫表的名稱
  • + field1:主數據庫表里的字段列表
  • + field2:附數據庫表里的字段列表
  • * on:關聯兩個表用的字段,這個字段兩個表必須得存在
  • where:條件檢索,主表字段前面需要補充t1.,附表是t2
  • order:排序方式,主表字段前面需要補充t1.,附表是t2
[站內搜索引擎]{@res.search}
<div id="search_list">
{@res.search table='%s_content'
        field='id,title,description,url'
        fulltext='ft_content'
        where='status=1'
        order='temp_score desc,id desc'
        number='10'}
{#foreach($res as $rs)}
<div>
        <a href="{DIR}{$rs[url]}">{$rs[title]}</a>
        <p>{$rs[description]}</p>
</div>
{#endforeach}
</div>
<div>{$res_pagelist code='html'}</div>

讀取表中的全文檢索字段,并返回最符合條件的搜索結果,支持模糊搜索;本查詢系統是基于二元分詞法開發制作,僅適用于特定的查詢應用。

屬性值,標注*的是必須填寫的屬性值

  • * table:要查詢的數據庫表名
  • * field:要顯示的字段列表,不能用*,必須填寫
  • * fulltext:全文檢索字段
  • where:條件檢索
  • order:排序方式
  • number:搜索結果每頁顯示數,默認為20
  • pagelist:分頁列表結構,默認為:<p class="k_pagelist">{$standard}{$next}</p>

歡迎收藏本文絕對鏈接,以作備查。
本文最后更新日期:2015.01.14

 

轉載請注明出處:唯眾網絡


相關教程 【更多】

唯眾網絡

爱彩乐彩票数据