模板調(diào)用手冊(cè)

2018-02-24 15:15 更新

Destoon B2B標(biāo)簽(tag)調(diào)用手冊(cè)


什么是標(biāo)簽調(diào)用?

標(biāo)簽調(diào)用是根據(jù)調(diào)用條件(condition)從數(shù)據(jù)表(table)讀取調(diào)用數(shù)量(pagesize)條數(shù)據(jù),并按排序方式(order)排序,最終通過(guò)標(biāo)簽?zāi)0宓牟季州敵鰯?shù)據(jù)。
可以看出,標(biāo)簽的工作分兩個(gè)部分,一是讀取數(shù)據(jù),二是顯示數(shù)據(jù)。


標(biāo)簽函數(shù)原型
標(biāo)簽函數(shù)保存于 include/tag.func.php
tag($parameter, $expires = 0)
$parameter 表示傳遞給tag函數(shù)的字符串,系統(tǒng)自動(dòng)將其轉(zhuǎn)換為多個(gè)變量。
例如傳遞 table=destoon&pagesize=10&hello=world
系統(tǒng)相當(dāng)于得到:

$table = 'destoon';
$pagesize = 10;
$hello = 'world';

三個(gè)變量
$expires 表示標(biāo)簽緩存過(guò)期時(shí)間
0 緩存$expires秒;0 - 系統(tǒng)默認(rèn)標(biāo)簽緩存時(shí)間;-1 - 不緩存;-2 - 緩存SQL結(jié)果;
一般情況保持默認(rèn)不需要傳遞。


數(shù)據(jù)讀取過(guò)程
例如以下標(biāo)簽:
<!--{tag("moduleid=5&condition=status=3&order=addtime desc&pagesize=10")}-->
會(huì)被轉(zhuǎn)換為如下的SQL語(yǔ)句:
SELECT *
FROM destoon_sell
WHERE status=3
ORDER BY addtime DESC
LIMIT 0,10
讀出的數(shù)據(jù)會(huì)保存在 $tags 數(shù)組里
通常情況下不需要寫(xiě)table=xxx,應(yīng)該寫(xiě)moduleid=模塊ID,系統(tǒng)會(huì)自動(dòng)對(duì)應(yīng)模塊的表


數(shù)據(jù)顯示過(guò)程

1、通過(guò)標(biāo)簽?zāi)0屣@示
傳遞&template=abc給標(biāo)簽函數(shù),例如:
<!--{tag("moduleid=...&template=abc")}-->
默認(rèn)的標(biāo)簽?zāi)0灞4嬖谀0迥夸?tag/目錄里,例如&template=abc將調(diào)用模板目錄/tag/abc.htm模板來(lái)顯示數(shù)據(jù)。
如果標(biāo)簽?zāi)0宕娣庞谄渌夸?,例如def,則傳遞&dir=def&template=abc,系統(tǒng)將調(diào)用模板目錄/def/abc.htm模板。

2、直接在模板里循環(huán)數(shù)據(jù)

<!--{php $tags=tag("moduleid=...&template=null");}-->

此寫(xiě)法傳遞標(biāo)簽?zāi)0鍨閚ull,并且直接返回?cái)?shù)據(jù)給$tags數(shù)組,此時(shí)可以直接在模板里循環(huán)了。
以下為一個(gè)完整的示例:

<!--{php $tags=tag("moduleid=...&template=null");}-->

{loop $tags $t}
...
{/loop}

第一種寫(xiě)法一般用于多次調(diào)用的數(shù)據(jù),第二種寫(xiě)法一般用于只調(diào)用一次的數(shù)據(jù)。


常用參數(shù)及含義

  • moduleid

    moduleid指模塊ID,可在后臺(tái)模塊管理里查詢(xún)。對(duì)于直接調(diào)用模塊的數(shù)據(jù),設(shè)置正確的模塊ID后,將不需要傳遞table參數(shù),系統(tǒng)會(huì)自動(dòng)獲取。
    例如傳遞moduleid=5,系統(tǒng)將識(shí)別為調(diào)用供應(yīng)信息,自動(dòng)設(shè)置table參數(shù)為sell。
    一般情況下,除了擴(kuò)展模塊里的功能都需要通過(guò)moduleid來(lái)調(diào)用。

  • table

    table指表名,可在后臺(tái)數(shù)據(jù)庫(kù)維護(hù)里查詢(xún)。對(duì)于Destoon系統(tǒng)表,不需要加表的前綴;對(duì)于非Destoon系統(tǒng)表,需要填寫(xiě)完整的表名,且傳遞prefix參數(shù)。
    例如對(duì)于Destoon系統(tǒng)表,傳遞table=announce,如果表前綴為destoon_,系統(tǒng)將識(shí)別表名為 destoon_announce。
    對(duì)于非Destoon系統(tǒng)表,傳遞table=tbabc&prefix=或者table=abc&prefix=tb,系統(tǒng)將識(shí)別表名為 tb_abc。

  • fields

    fields指查詢(xún)的字段,默認(rèn)為*??梢詡鬟f例如 fields=title,addtime,但是一般情況下無(wú)需傳遞,Destoon獨(dú)有的標(biāo)簽緩存機(jī)制會(huì)自動(dòng)緩存查詢(xún)結(jié)果,不必?fù)?dān)心效率問(wèn)題。

  • condition

    condition指查詢(xún)的條件,如果不傳遞,則為1,代表任意條件的數(shù)據(jù)(此項(xiàng)需了解SQL語(yǔ)法)。Destoon所有模塊遵循統(tǒng)一標(biāo)準(zhǔn)開(kāi)發(fā),所以很多條件是通用的。
    例如 status=3表示正常通過(guò)的信息、status=3 and level=1表示級(jí)別為1的信息、status=3 and thumb<>''表示有標(biāo)題圖片的信息等。

  • order

    order指數(shù)據(jù)的排序方法(此項(xiàng)需了解SQL語(yǔ)法)。
    例如order=addtime desc表示按添加時(shí)間降序排列、order=itemid desc表示按itemid降序排列、order=rand()表示隨機(jī)數(shù)據(jù)等。

  • pagesize

    pagesize指調(diào)用數(shù)據(jù)的數(shù)量,如果不傳遞,默認(rèn)為10。

  • template

    template指指定的標(biāo)簽?zāi)0澹绻粋鬟f,默認(rèn)為list,位于模板目錄/tag/list.htm,如果傳遞為null,表示不應(yīng)用標(biāo)簽?zāi)0?。參?jiàn)上述數(shù)據(jù)顯示過(guò)程。

  • debug

    debug參數(shù)用于調(diào)試標(biāo)簽,例如傳遞&debug=1,系統(tǒng)將輸出標(biāo)簽構(gòu)造成的SQL語(yǔ)句,以便驗(yàn)證標(biāo)簽寫(xiě)法是否正確,不需要調(diào)試的標(biāo)簽不用加此參數(shù)。


其他常見(jiàn)用法舉例

&和and的區(qū)別
&用來(lái)分割參數(shù),and是sql語(yǔ)句where后的讀取條件,二者完全不同。

多表聯(lián)合查詢(xún)
例如查詢(xún)會(huì)員名為destoon的會(huì)員和公司資料,可以使用:
{tag("table=destoon_member m,destoon_company c&prefix=&condition=m.userid=c.userid and m.username='destoon'&template=list-com")}
destoon_member和destoon_company是表的實(shí)際名稱(chēng)(包含表前綴),prefix=表示系統(tǒng)不再自動(dòng)在表名前加前綴。
通常通過(guò)傳遞moduleid可以實(shí)現(xiàn)大部分的調(diào)用,除非您確認(rèn)熟悉聯(lián)合查詢(xún),否則不推薦使用。
截至目前,系統(tǒng)默認(rèn)模板里還沒(méi)有一個(gè)功能需要用到聯(lián)合查詢(xún)。

控制標(biāo)題長(zhǎng)度
在標(biāo)簽里傳遞length參數(shù),例如&length=20表示20個(gè)字符長(zhǎng)度(一個(gè)漢字占2個(gè)字符),一般情況建議用css隱藏多余字符(定義height和overflow:hidden)。
傳遞length參數(shù),系統(tǒng)僅對(duì)title字段自動(dòng)截取,如果需要截取其他字段,可用dsubstr函數(shù)。
例如 {dsubstr($t[company], 20, '...')} 表示截取company字段為20個(gè)字符,截取后,結(jié)尾追加...

設(shè)置日期顯示格式
可以在標(biāo)簽里傳遞datetype參數(shù):
1 表示 年;
2 表示 月-日;
3 表示 年-月-日;
4 表示 月-日 時(shí):分;
5 表示 年-月-日 時(shí):分;
6 表示 年-月-日 時(shí):分:秒
也可以在模板里直接使用date函數(shù),例如{date('Y-m-d', $t[addtime])} 表示將時(shí)間轉(zhuǎn)換為 年-月-日 格式
date函數(shù)的使用請(qǐng)參閱PHP手冊(cè)。

調(diào)用某一分類(lèi)的信息
在標(biāo)簽里傳遞catid參數(shù),例如&catid=5表示調(diào)用分類(lèi)ID為5的所有信息。
如果調(diào)用多個(gè)分類(lèi),用逗號(hào)分隔分類(lèi)ID,例如 &catid=5,6,7表示調(diào)用分類(lèi)ID為5、6、7的所有信息。
分類(lèi)調(diào)用默認(rèn)包含子分類(lèi)的信息,如果不需要包含子分類(lèi),可設(shè)置&child=0參數(shù)。
例如&catid=5&child=0表示只調(diào)用分類(lèi)ID為5的信息,不包括子分類(lèi)的信息。

調(diào)用某一地區(qū)的信息
調(diào)用地區(qū)信息和上述調(diào)用分類(lèi)信息的方法完全相同,將其中的catid換為areaid即可。

顯示信息所在分類(lèi)
<a href="{$MODULE[$moduleid][linkurl]}{$CATEGORY[$t[catid]][linkurl]}">{$CATEGORY[$t[catid]][catname]}</a>
注意:自V4.0,以上寫(xiě)法將不可用,需要在標(biāo)簽里傳遞&showcat=1參數(shù),然后在模板里寫(xiě)<a href="{$t[caturl]}">{$t[catname]}</a>

控制列數(shù)
此項(xiàng)常用于圖片的布局,可使用cols參數(shù)。
例如調(diào)用12張圖片,一行顯示4個(gè),共3行,則傳遞&pagesize=12&cols=4
支持cols參數(shù)的標(biāo)簽?zāi)0逑辴humb-table.htm和list-table.htm
其中,thumb-table.htm顯示圖片列表,list-table.htm顯示文字列表
如果新建支持cols的標(biāo)簽?zāi)0寤蛑苯友h(huán)$tags,可參考以上兩個(gè)模板的寫(xiě)法
上述效果可以也可以通過(guò)CSS實(shí)現(xiàn),無(wú)需使用表格,請(qǐng)自行書(shū)寫(xiě)

顯示文章的簡(jiǎn)介
使用{$t[introduce]}變量,如果要截取字?jǐn)?shù),例如80字符,可使用{dsubstr($t[introduce], 80, '...')}

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)