調用

原創 jingccj  2019-08-18 11:11:42  閱讀 88 次 評論 0 條
_BUwLii">

在模板中除了直接顯示的變量之外,還有另一種獲取動態數據列表的方式,我們稱之為“調用”。下面給出一個簡單的調用:

<table>
<{getitemscategory="10"num="5"template="<tr><td>[itemid]</td><td><ahref='[url]'>[title]</a></td></tr>"}>
</table>

了解HTML的站長能很容易理解這個調用是展示了一個表格,其中的category="10"代表從ID為10的欄目取內容,num="5"代表取5條。稍加修改就能在您的測試模板中看到效果,生成的頁面源代碼是這樣的:

<table>
<tr><td>674</td><td><ahref='http://dev.akcms.net/dynamic/5.2.htm'>5.2發布改進應用的編碼機制</a></td></tr><tr><td>678</td><td><ahref='http://dev.akcms.net/dynamic/5.2.1.htm'><fontcolor="#FF0000">5.2.1發布又修正了分頁BUG</font></a></td></tr><tr><td>680</td><td><ahref='http://dev.akcms.net/dynamic/diy-link.htm'><fontcolor="#FF0000">慶祝廣告自助發布功能上線優質外鏈限時半價</font></a></td></tr><tr><td>955</td><td><ahref='http://dev.akcms.net/dynamic/5.3.5.htm'>5.3.5發布改進了批量生成欄目靜態頁</a></td></tr><tr><td>970</td><td><ahref='http://dev.akcms.net/dynamic/970.htm'>企業網站模板2發布</a></td></tr><!--0.0156-->
</table>


相信大家對什么是調用已經有了直觀的概念了,下面我們以這個調用為例詳細的說一下這個規則:


1 getitems我們叫它“調用標簽”,AKCMS內核一共支持10種基礎的調用標簽:


getitems
獲取內容
getattachments
獲取附件
getlists獲取列表項(通用)
getcategories
獲取欄目
gettime獲取時間(通用)
getpaging
獲取分頁
getsqls獲取數據庫表內容(通用)
getcomments獲取評論
gettexts獲取內容正文(常用于分頁)
getpictures
獲取圖片

因為AKCMS的靈活擴展的特性,通過應用(插件)可以擴充更強大、豐富的調用功能(應用中心:http://www.akhtm.com/app/)


2 category="10"和num="5"是“調用參數”,每一種調用標簽對應許多可選或必選的參數。


3 template="xxxxxxxxxxxx"是“調用模板”,它決定符合條件的內容以何種格式輸出,可以理解為列表的循環體。


4 調用的前后必須是“<{”、“}>”,用于表示開始和結束。


5 調用參數不但可以是直接值,也可以是變量,假設當前頁面有一個變量叫$c1(具體哪個頁面可以用哪個變量請參考《變量》),內容是某欄目的ID,如果要調用該欄目的內容也可以直接把變量作為調用參數的值(注意看category參數的差異):

<{getitemscategory=$c1num="5"template="<tr><td>[itemid]</td><td><ahref='[url]'>[title]</a></td></tr>"}>


6 變量不但可以作為參數,也可以出現在調用模板中,假設一個有變量叫$abc,現在有需求需要在ID之前固定顯示這個$abc的值,可以在模板里直接插入變量(注音:因為調用模板本身就在<{}>中間,所以調用模板里的變量不需要再加<{}>前后綴),下面是具體的實例(注意看調用模板的差異):

<{getitemscategory="10"num="5"template="<tr><td>$abc[itemid]</td><td><ahref='[url]'>[title]</a></td></tr>"}>

由于變量之后緊跟著的是中括號“[”,它是天然的變量終止符。如果想在“123”的前面固定顯示$abc的值,按照上面的例子應該寫成

<{......template="...$abc123..."}>

因為變量名中數字也是合法的,所以系統誤認為變量名就叫“$abc123”于是就出錯了。這種情況下要人工為變量輸入一個終止符:“\00”

<{......template="...$abc\00123..."}>

這樣系統就知道$abc是一個變量,123是跟在變量后面的。“\00”只起到分隔變量的作用,無任何輸出。


7 調用模板中插入變量時,必須使用雙引號

正常情況下,調用模板的指定使用雙引號和單引號均可,但如果想在其中插入變量則只能使用雙引號。

<{...template='abc'}>
<!--template是abc-->

<{...template="abc"}>
<!--template是abc-->

<{...template='abc$abc'}>
<!--template是abc$abc($不被認為是變量的開始,而是$字符)-->

<{...template="abc$abc"}>
<!--template是abc后面接變量$abc的內容-->


8 調用可以嵌套,但只支持嵌套一次,大部分情況下這就足夠了,如果在制作模板中需要用到兩次或以上的嵌套,首先應該想到修改實現方式。嵌套調用比較復雜,請參考專門的文檔《嵌套調用》


9 調用的效率遠低于變量,當一個數據有現成的變量的時候(比如:內容頁)不要使用調用獲取,因為這會帶來額外的數據庫查詢開銷,頁面打開速度將受影響。下面兩個代碼的顯示效果是一樣的,但速度相差很大:

1<{$title}>
<!--幾乎不花時間-->

2<{getitemsid=$idnum="1"template="[title]"}>
<!--2、3次數據庫查詢是起碼的-->
本文地址:http://www.joutvc.tw/post/2039.html
版權聲明:本文為原創文章,版權歸 jingccj 所有,歡迎分享本文,轉載請保留出處!

發表評論


表情

還沒有留言,還不快點搶沙發?