destoon模板標(biāo)簽種類
destoon采用的是萬能循環(huán)模板標(biāo)簽,一套循環(huán)標(biāo)簽,只要修改其中的參數(shù)就可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)中任何內(nèi)容的調(diào)用,相比其它的php開源程序來說先進(jìn)的不是一點(diǎn)點(diǎn)。
調(diào)用文章,調(diào)用商品,調(diào)用供求,調(diào)用網(wǎng)站分類,調(diào)用網(wǎng)站會(huì)員等等只要是數(shù)據(jù)庫(kù)能訪問到的內(nèi)容都是同一個(gè)套標(biāo)簽調(diào)用。
當(dāng)然destoon為了方便調(diào)用,對(duì)導(dǎo)航菜單,分類,地區(qū)數(shù)據(jù)的調(diào)用單獨(dú)封裝了函數(shù)調(diào)用標(biāo)簽。
destoon的默認(rèn)調(diào)用標(biāo)簽一共有四種,下面我們就來歸類下:
一、萬能tag()標(biāo)簽
注:改變tag()函數(shù)中的傳入?yún)?shù),可以輕松實(shí)現(xiàn)調(diào)用數(shù)據(jù)庫(kù)中的任何表任何內(nèi)容
二、導(dǎo)航菜單 $MODULE 標(biāo)簽
注:destoon封裝的一個(gè)專門調(diào)用網(wǎng)站菜單導(dǎo)航的函數(shù)
三、分類 get_maincat(0, $mid, 1) 標(biāo)簽
注:專門用來調(diào)用欄目分類的標(biāo)簽
四、地區(qū) get_mainarea() 標(biāo)簽
注:專門調(diào)用地區(qū)的標(biāo)簽
以上四種是destoon自帶的標(biāo)簽,如果您對(duì)destoon足夠了解的話,是可以輕易擴(kuò)展出任何調(diào)用標(biāo)簽的。
注:
本節(jié)課程重點(diǎn)是了解destoon的標(biāo)簽種類
方便以后在模板制作時(shí)知道什么什么該用什么標(biāo)簽
destoon標(biāo)簽引擎原理
在學(xué)習(xí)destoon四大調(diào)用標(biāo)簽前,我們先來了解下destoon的標(biāo)簽引擎的解析原理。
在destoon模板中,只要是循環(huán)的內(nèi)容都是 通過 loop 實(shí)現(xiàn)的,格式如下:
#
{loop $tags $i $t}
循環(huán)區(qū)塊代碼
{/loop}
#
loop 標(biāo)簽的開頭是 {loop 參數(shù)1 參數(shù)2 參數(shù)3 },結(jié)尾是 {/loop}
loop的三個(gè)參數(shù)
loop 標(biāo)簽一共有三個(gè)參數(shù),參數(shù)1和參數(shù)3是必須參數(shù),參數(shù)2是可選參數(shù)
例:{loop 參數(shù)1 參數(shù)2 參數(shù)3 }
參數(shù)1:
必須是一個(gè)數(shù)組變量,為什么必須是一個(gè)數(shù)組呢?懂點(diǎn)javascript 和php的同學(xué)都知道,循環(huán)必須要數(shù)組才能循環(huán)出內(nèi)容呀! 這個(gè)數(shù)組可以是一個(gè)一維數(shù)組,也可以是一個(gè)二維數(shù)組。我們從數(shù)據(jù)庫(kù)調(diào)出來的數(shù)組都是二維數(shù)組。
參數(shù)1我們一般用 $tags 表示,其實(shí)是可以用任意變量表示的,如:$a,$b。 一維數(shù)組和二維數(shù)組之間的區(qū)別,在參數(shù)時(shí)我們?cè)俳榻B。
參數(shù)1的數(shù)組是我們通過四大調(diào)用標(biāo)簽,或者自己封裝的函數(shù)調(diào)用出來的,比如我們 使用 {loop $tags $i $t} 調(diào)用數(shù)據(jù),那么 $tags 這個(gè)變量是必須在loop標(biāo)簽之前申明,賦值。如果$tags 變量是空的,或者不為數(shù)組,循環(huán)結(jié)果都是空的,沒有任何內(nèi)容。
參數(shù)2:
參數(shù)2是一個(gè)可選參數(shù),可要可不要。參數(shù)2是一個(gè)自增變量,從0開始,一般用 $i 表示,也可以是其它的任意變量,如 $k, $j。
它的用處就是當(dāng)我們?cè)诹兄行枰诿科恼虑懊骘@示一個(gè) 1 2 3 4 ..... 10 這樣的序號(hào)時(shí),或者我們需要判斷 每隔一條 加一條橫線,或加紅,或換不同樣式時(shí),作判斷時(shí)使用。
在模板中 用{$i}調(diào)用,具體,我們后續(xù)會(huì)用專門的一節(jié)課來講解。
參數(shù)3:
參數(shù)3和參數(shù)1一樣是必須參數(shù),少了就會(huì)報(bào)錯(cuò)。
參數(shù)3的作用是將loop循環(huán)出來的每行數(shù)據(jù)組裝賦值給一個(gè)變量,用來在循環(huán)模板中調(diào)用展示。
參數(shù)3通常用 $t 表示,可以換成其它任何變量,如 $c , $v等。
當(dāng)我們參數(shù)3使用 $t 時(shí),循環(huán)模板中調(diào)用數(shù)據(jù)時(shí)就只能使用 {$t[字段名]},如調(diào)用標(biāo)題 {$t[title]}。
參數(shù)3為$v 時(shí)間,那么循環(huán)模板中就只能使用 {$v[字段名]},如調(diào)用標(biāo)題 {$v[title]}。
參數(shù)1 為一維數(shù)組和二維數(shù)組的區(qū)別:
參數(shù)3我們?cè)斀饬搜h(huán)模板中調(diào)用數(shù)據(jù)字段的方法,其實(shí)這是參數(shù)1為二維數(shù)組時(shí)的調(diào)用方法,如果為一維數(shù)組時(shí)就不能這么調(diào)用了
只能用 {$t} 這樣的調(diào)用方法。
一維數(shù)組,二維數(shù)組的概念大家如果不了解的話,可以百度下 php數(shù)組,了解下。不過這并不是多重要的東西,我們模板中所有的調(diào)用大都是基于二維數(shù)組的調(diào)用,一維調(diào)用基本都是在二開個(gè)性化功能使用,能二開的人這所有的問題都不是問題了。
注:
本節(jié)課程主要掌握 loop標(biāo)簽的三個(gè)參數(shù)
初識(shí)tag()
第一步:
tag() 函數(shù)將數(shù)據(jù)庫(kù)表中的數(shù)據(jù)按我們的要求調(diào)用出來,組裝成一個(gè)二維數(shù)組,并賦值給變量 $tags
代碼如下:
<!--{php $tags=tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc&template=null");}-->
第二步:
loop 將 $tags 二維數(shù)組循環(huán)出來,賦給循環(huán)模板
代碼如下:
{loop $tags $i $t}
<li><a href="{$t[linkurl]}">{$t[title]}</a></li>
{/loop}
第三步:
模板將數(shù)據(jù)以網(wǎng)頁形式展現(xiàn)出來。
注: 第一步的 $tags=tag( 中的 $tags 與第二步中的 {loop $tags 中$tags 保持一至,變量名一模一樣,如可以變成,$a=tag(, {loop $a
課程提示:
學(xué)一樣?xùn)|西,如果先了解他的了運(yùn)行原理,學(xué)起來就會(huì)事半功倍。如果有一定基礎(chǔ)的同學(xué),看了我這三節(jié)課,再看看destoon官方模板手冊(cè),基本已經(jīng)可以做模板了。
細(xì)心的朋友,可能會(huì)發(fā)現(xiàn),為什么destoon默認(rèn)模板中的標(biāo)簽調(diào)用方法和我上面講解的不一樣呢?
我們來看一段destoon默認(rèn)首頁的標(biāo)簽
<!--{tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc")}-->
是不是和我們的有區(qū)別呢? 這個(gè)就涉及到destoon模板標(biāo)簽的兩種方式了,默認(rèn)方式和自定義方式。
tag()的兩種使用方式
下面我來看兩段調(diào)用標(biāo)簽代碼
一、destoon默認(rèn)模板中的求購(gòu)信息調(diào)用
二、自己寫的調(diào)用代碼
{loop $tags $i $t}
{if $datetype} {timetodate($t[addtime], $datetype)}{/if}{if $showcat}[{$t[catname]}] {/if}{$t[title]}
{/loop}
這兩個(gè)代碼的都是調(diào)用最新的求購(gòu)信息,咋看起來差別之 么大呢?
第二段代碼明顯比一段好懂,上面是調(diào)用語句,下面是循環(huán)模板,大部分開源程序的程序調(diào)用都是這么干的。
很多同學(xué)在初次接觸destoon模板時(shí),都覺得難學(xué)的原因就是destoon默認(rèn)模板都是采用的第一種模式,大部分人看了標(biāo)簽找不到循環(huán)模板在哪里,所以無從下手修改。
這兩段代碼的最大區(qū)別就是,第一段的循環(huán)模板不在當(dāng)前模板中,第二段是在當(dāng)前模板,這也就是destoon tag()標(biāo)簽的兩種調(diào)用方式了。
第一種方式:循環(huán)模板不在當(dāng)前頁面
這種方式是通過加載模板目錄中的 tag/ 目面的list-**.htm 標(biāo)簽?zāi)0鍖?shí)現(xiàn)調(diào)用。
在tag()函數(shù)中有一個(gè) &template 參數(shù),用來加載tag目錄下指定文件名的標(biāo)簽?zāi)0?,?&template=list-buy 表示加載的是tag目錄下的 list-buy.htm 文件。 如果我們?cè)趖ag()中不傳&template參數(shù),就默認(rèn)會(huì)加載tag目錄下的list.htm。
我們上面這段標(biāo)簽沒有傳&template 參數(shù),就表示是加的默認(rèn)list.htm 文件。
我想destoon官方默認(rèn)模板之所以都不在當(dāng)前模板中加載循環(huán)模板標(biāo)簽,是因?yàn)樽鳛閎2b門戶系統(tǒng),頁面多,需要做到盡可能的少寫代碼,讓代碼盡可能多的實(shí)現(xiàn)重用。我在此的建議是,如果大家的循環(huán)模板是很多頁面共用的,盡量放到tag下面,如果只是調(diào)用一次就用我們的第二種方法寫在當(dāng)前頁面。
第二種方式:循環(huán)模板標(biāo)簽寫在當(dāng)前模板中
寫在當(dāng)前模板中的好處是維護(hù)起來更加方便,對(duì)于不懂destoon標(biāo)簽機(jī)制更容易看懂。
寫在當(dāng)前的方法是 在tag( 前面加上 php $tags= ,修改結(jié)果:
并且必須傳入 &template參數(shù),設(shè)置值為 null,修改結(jié)果為:&template=null
方式2的原理是把tag()調(diào)用出來的內(nèi)容賦值給 $tags 變量,然后用loop將$tags的內(nèi)容循環(huán)出來給模板標(biāo)簽展示。在第二課我們已解釋過loop了,這里就不做講解了。
本章小結(jié):
兩種方式各有優(yōu)劣,使用第二種方式時(shí)某些默認(rèn)參數(shù)傳進(jìn)去是沒有用處的,比如分頁參數(shù)。具體我們會(huì)第五課做詳細(xì)講解。
tag()參數(shù)詳解
在了解destoon tag()的參數(shù),可以先打開destoon官方的 標(biāo)簽調(diào)用手冊(cè),便于我們接下來的學(xué)習(xí)。
這是一個(gè) destoon 默認(rèn)首頁模板index.htm中的標(biāo)簽
<!--{tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc")}-->
在tag(" 這里面的都是參數(shù)"),傳輸參數(shù)的方式是: &參數(shù)名=參數(shù)值,第一個(gè)參數(shù)省略&符號(hào)。
tag()的參數(shù),分類必須參數(shù)和可選參數(shù)兩種
必須參數(shù):
moduleid:
示例: moduleid=6,表示調(diào)用的是求購(gòu)頻道的內(nèi)容,調(diào)用其它頻道的內(nèi)容只需要將6改成對(duì)應(yīng)的頻道id即可,頻道Id可以destoon后臺(tái)的系統(tǒng)維護(hù),模塊管理中查看。
table:
示例:table=buy_6,和moduleid=6效果是一樣的,也表示調(diào)用的是求購(gòu)頻道的內(nèi)容,不同的是table傳的值直接是表名,并且不帶表前綴,如果要調(diào)用其它表的內(nèi)容只需要將buy_6替換成對(duì)應(yīng)的表名即可。
注: tag()的必須參數(shù)一共就moduleid,table兩個(gè),而且這兩個(gè)是二選一,只能同時(shí)使用其中的一個(gè),moduleid用來調(diào)用各大頻道主表的內(nèi)容,如果要調(diào)用非頻道主表的內(nèi)容就得使用table直接傳表名了。
可選參數(shù):
condition:
示例:&condition=status=3,conditon使用度和moduleid是幾乎一樣的,只要是tag()標(biāo)簽中都會(huì)傳這個(gè)參數(shù),這個(gè)參數(shù)的作用是將傳入的值直接作為sql條件進(jìn)行數(shù)據(jù)庫(kù)內(nèi)容篩選。比如我們示例中的 &condition=status=3,php解析后就是 where status=3。、
condition是可以無限傳條件的,有多少都可以往這里傳,比如:&condition=status=3 and level>0 and vip>0 and itemid>100 and itemid<1000
這是傳的標(biāo)準(zhǔn)的sql語句。
如果您是小白,不懂啥是sql。舉個(gè)簡(jiǎn)單的示例:我們要調(diào)用供應(yīng)頻道的已審核的信息,并且這信息要是推薦的,還得是vip會(huì)員發(fā)布的。那么首先我們構(gòu)建tag標(biāo)簽語句,<!--{tag("")}-->,然后傳入第一個(gè)參數(shù) moduleid=5,供應(yīng)頻道的id是5;當(dāng)然也可以用table=sell_5替代。
<!--{tag("moduleid=5")}-->
第二步傳入condition篩選我們需要要的數(shù)據(jù)
<!--{tag("moduleid=5&condition=")}-->
條件一:已審核的信息,換成sql語句就是 status=3
<!--{tag("moduleid=5&condition=status=3")}-->
條件二:推薦的信息,換成sql語句是 level>0,如果是調(diào)用指定推薦級(jí)別的,如推薦2的, level=2
<!--{tag("moduleid=5&condition=status=3 and level>0")}-->
因?yàn)閘evel 是第二個(gè)條件了,所以我們得用and來連接,并且and 前后都必須有空格,沒有的話就會(huì)報(bào)錯(cuò),condtion的值,從第二個(gè)條件開始都要用and來連接。
條件三:vip會(huì)員發(fā)布的信息,換成sql語句就是 vip>0,如果要指定vip級(jí)別,如1 就是 vip=1
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0")}-->
通過本示例,相信大家已經(jīng)學(xué)會(huì)如何信condition傳值調(diào)用我們想要的信息了。
常用的一些condition條件:
已審核:status=3, 推薦的:level>0,vip會(huì)員的:vip>0, 有縮略圖的:thumb<>'', 指定會(huì)員組的:groupid=6
pagesize:
怎么傳條件我們已經(jīng)學(xué)會(huì)了,但是我們調(diào)出來的內(nèi)容還得限制數(shù)量不是嗎?pagesize就是用來指定數(shù)量的。
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20")}-->
調(diào)多少條就寫&pagesize=20 是多少就行了。這個(gè)參數(shù)沒啥好解釋的。
另外pagesize 有一個(gè)搭配使用的參數(shù)叫 offset,寫法是&offset=10, 作用是從第一幾條開始調(diào)用。
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10")}-->
表示從10條開始調(diào)用,往后調(diào)20條信息出來。
提示:pagesize 如果不傳,tag()會(huì)員默認(rèn)調(diào)用10條信息。
order:
tag()的排序參數(shù),用法:&order=addtime desc,edittime desc,可以多個(gè)排序字段連接,用,隔開。
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10&order=addtime desc,edittime desc")}-->
常用排序方法:
添加時(shí)間降序:addtime desc,倒序:addtime asc
修改時(shí)間降序:edittime desc ,倒序: edittime asc
推薦級(jí)別降序:level desc,倒序:level asc
vip級(jí)別降序:vip desc,倒序:vip asc
提示:order如果不傳,就會(huì)默認(rèn)使用mysql的排序,destoon是沒有封裝order默認(rèn)排序的。
template:
標(biāo)簽?zāi)0鍏?shù),指給當(dāng)前tag()調(diào)用出來的內(nèi)容賦給給一個(gè)循環(huán)模板展示,使用方法:&template=list-sell
標(biāo)簽?zāi)0宕娣旁谀0迥夸浀?tag目錄下面,我們要調(diào)用哪個(gè)模板就&template=模板文件名, 文件名不帶.htm
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10&order=addtime desc,edittime desc&template=list-sell")}-->
不傳template參數(shù),tag()函數(shù)會(huì)默認(rèn)調(diào)用tag目錄下的list.htm模板。
不調(diào)用標(biāo)簽?zāi)0澹诋?dāng)前頁面自定義模板,template的值設(shè)為null: &template=null
然后標(biāo)簽語句也得做相應(yīng)的修改,用loop在當(dāng)前頁面循環(huán),具體請(qǐng)看上一節(jié)課的詳細(xì)介紹。
fields:
fields指查詢的字段,默認(rèn)為*??梢詡鬟f例如 fields=title,addtime,但是一般情況下無需傳遞,Destoon獨(dú)有的標(biāo)簽緩存機(jī)制會(huì)自動(dòng)緩存查詢結(jié)果,不必?fù)?dān)心效率問題。
以上是官方的介紹,看了也能明白了,就是循環(huán)模板中要調(diào)用哪些字段,就把哪些字段用,隔開傳給fields。
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10&lields=title,addtime,&order=addtime desc,edittime desc&template=list-sell")}-->
以上的參數(shù)是比較重要的一些可選參數(shù),下面部分參數(shù)都是一些不常用的,解釋就比較簡(jiǎn)單了,大家請(qǐng)自行研究實(shí)驗(yàn)。
catid:
調(diào)用指定分類下的信息,用法&catid=10
areaid:
調(diào)用指定地區(qū)的信息,用法:&areaid=1, 一般用來調(diào)用當(dāng)前分站的信息,如:&areaid=$cityid
showcat:
需要調(diào)用當(dāng)前信息的分類名稱和分類連接時(shí)傳入,用法:&showcat=1 showcat的值只能是1
然后標(biāo)簽?zāi)0逯姓{(diào)用 {$t[caturl]} 分類連接,{$t[catname]} 分類名稱
showpage 和 page:
tag()自帶的分頁參數(shù),showpage和page必須一起使用才能正常分頁,使用方法: &showpage=1&page=$page, 參數(shù)值是固定的。
然后在標(biāo)簽?zāi)0逯袀魅?{$pages} 即可實(shí)現(xiàn)分頁。
提示:tag()使用showpage和page時(shí),必須使用標(biāo)簽?zāi)0澹瑃emplate的值不能為null,
length:
控制標(biāo)題長(zhǎng)度用的,用法:&length=20,表示標(biāo)題長(zhǎng)度為20個(gè)字符,10個(gè)漢字。
debug:
debug參數(shù)用于調(diào)試標(biāo)簽,例如傳遞&debug=1, 系統(tǒng)將輸出標(biāo)簽構(gòu)造成的SQL語句,以便驗(yàn)證標(biāo)簽寫法是否正確,不需要調(diào)試的標(biāo)簽不用加此參數(shù)。
自定義參數(shù):
自定義參數(shù)只能在標(biāo)簽?zāi)0宸绞较率褂?,在?dāng)前頁面自定義循環(huán)模板是無效的。
使用方法: &參數(shù)名=參數(shù)值,如:&dtmoban=123456, 在標(biāo)簽?zāi)0逯惺褂?{$dtmoban} 調(diào)出的值便是 123456
本節(jié)小結(jié):
本節(jié)課主要掌握destoon tag()函數(shù)的常用自定義參數(shù)。
但是同學(xué)們?cè)谧瞿0鍟r(shí)經(jīng)常會(huì)遇到參數(shù)傳值造成頁面出錯(cuò),那么我們?nèi)绾谓o參數(shù)正確的傳值呢?下節(jié)課我將為大家專門講解。
給tag()參數(shù)正確傳值方法
給tag()參數(shù)傳值的三種方式
一、傳數(shù)字
傳數(shù)字是最簡(jiǎn)單的,直接在參數(shù)的等于號(hào)后面寫上要傳的數(shù)字就行了,如:&catid=1205
二、傳文字(字符串)
傳文字類型的字符串,需要給文字加上''(單引號(hào)),如:&title='dt模板堂'。
字符串類型的值,在tag()自帶的參數(shù)只有 &condition 的值里會(huì)用到,其它參數(shù)都用不上。
示例:
<!--{tag("moduleid=5&condtion=status=3 and title like '%dt模板堂%'&pagesize=10&order=addtime desc")}-->
三、傳變量
傳變量有三種情況
1、變量值為數(shù)字
例如我們有一個(gè)變量:$catid = 1025; 這個(gè)變量是在php里面申明的,或者從url中獲取到的。
tag()中傳值方法: &catid=$catid
就像傳數(shù)字一樣,直接將變量寫到等于號(hào)后面就好了。
2、變量值為字符串
例如我們有一個(gè)變量:$kw = 'dt模板堂';
tag()中傳值方法: &condition=title like '%$kw%'
字 符串傳只有在condtion參數(shù)的值里會(huì)用到
3、變量名為二維
例:我們有一個(gè)項(xiàng)目,先要從分類表里調(diào)出當(dāng)前頻道的頂級(jí)分類,然后再循環(huán)調(diào)出每個(gè)分類的子分類
代碼如下:
<!--{php $tags=tag("table=category&condition=parentid=0 and moduleid=5&pagesize=10&order=listorder asc&template=null");}-->
{loop $tags $i $t}
<li><a href="{cat_url($t[catid])}">{$t[catname]}</a></li>
{/loop}
通過上面的代碼,我們已成功調(diào)出頂級(jí)分類了,有過其它c(diǎn)ms模板標(biāo)簽調(diào)用的小伙伴一定,需要調(diào)出子分類,需要在大循環(huán)里再把分類調(diào)用代碼再小循環(huán)一次,并且把小循環(huán)的條件中分類上級(jí)id改成大循環(huán)中獲取的 分類id。
我們來看頂級(jí)分類調(diào)用中condition的值中我們使用prarentid=0,表示調(diào)用prarentid值為0的分類,也就是頂級(jí)分類。
如果我們調(diào)出某個(gè)頂級(jí)分類下面的子分類,只需要把這個(gè)0改成對(duì)應(yīng)的頂級(jí)分類的id就行了。
現(xiàn)在我們獲取的一大分類的id是一個(gè)變量 $t['catid'],按照我們的思路將調(diào)用代碼復(fù)制一遍,插入循環(huán)中,并且把prarentid=0改成prarentid=$t['catid']
代碼如下:
<!--{php $tags=tag("table=category&condition=parentid=0 and moduleid=5&pagesize=10&order=listorder asc&template=null");}-->
{loop $tags $i $t}
<li><a href="{cat_url($t[catid])}">{$t[catname]}</a></li>
<!--二級(jí)分類循環(huán)開始-->
<!--{php $sub=tag("table=category&condition=parentid=d=$t['catid'] and moduleid=5&pagesize=10&order=listorder asc&template=null");}-->
{loop $sub $k $v}
<li><a href="{cat_url($v[catid])}">{$v[catname]}</a></li>
<!--二級(jí)分類循環(huán)結(jié)束-->
{/loop}
{/loop}
改好了保存到模板里,刷新下頁面,是不是報(bào)錯(cuò)了。
這是因?yàn)槲覀冊(cè)趥魅攵S變量作為值時(shí),沒有使用php連接符的原因,原理我們這里就不解釋了,做模板不要求我們會(huì)php。
我們只需要將代碼修改下
parentid=d=$t['catid'] 改成 parentid=d=".$t['catid']."
這樣就不會(huì)報(bào)錯(cuò)了,正常調(diào)出子分類。
<!--{php $tags=tag("table=category&condition=parentid=0 and moduleid=5&pagesize=10&order=listorder asc&template=null");}-->
{loop $tags $i $t}
<li><a href="{cat_url($t[catid])}">{$t[catname]}</a></li>
<!--二級(jí)分類循環(huán)開始-->
<!--{php $sub=tag("table=category&condition=parentid=d=".$t['catid']." and moduleid=5&pagesize=10&order=listorder asc&template=null");}-->
{loop $sub $k $v}
<li><a href="{cat_url($v[catid])}">{$v[catname]}</a></li>
<!--二級(jí)分類循環(huán)結(jié)束-->
{/loop}
{/loop}
特別注意: 如果$t[catid]的變量值不是數(shù)字是字符串,得加上加''單引號(hào),修改結(jié)果: parentid=d='".$t['catid']."'
本章小結(jié):
本節(jié)課的要點(diǎn)是傳變量時(shí)的三種情況,變量為二維時(shí)記得加連接符,變量值為字符串要加單引號(hào) ''。
到了這里tag()講解也就算完畢,接下來課程我們?cè)賹W(xué)習(xí)下其它三個(gè)標(biāo)簽函數(shù)。
$MODULE詳解
其實(shí)菜單調(diào)用是固定的一個(gè)方法,直接從默認(rèn)模板header.htm中把代碼復(fù)制過來,換個(gè)模板就行了。
下面就是我從默認(rèn)模板復(fù)制過來的菜單調(diào)用代碼,唯一要注意的就是如何判斷高亮。
<li{if $moduleid<4} class="menuon"{/if}><a href="{$MODULE[1][linkurl]}"><span>首頁</span></a></li>
{loop $MODULE $m}{if $m[ismenu]}<li{if $m[moduleid]==$moduleid} class="menuon"{/if}><a href="{$m[linkurl]}"{if $m[isblank]} target="_blank"{/if}><span{if $m[style]} style="color:{$m[style]};"{/if}>{$m[name]}</span></a></li>{/if}{/loop}
通過以上代碼我們看出,首頁的連接是靜態(tài)的,不能通過循環(huán)調(diào)出。 判斷首頁高亮的方法是 {if $moduleid<4} class="menuon"{/if},moduleid小于4。
在$MODULE 的loop循環(huán)中,我們要注意的一點(diǎn)是,緊連接loop的是{if $m[ismenu]},功能是判斷哪些哪些模塊允許作為導(dǎo)航菜單調(diào)用,如果不加就會(huì)把所有的模塊名稱都調(diào)出來。
另外注意的一點(diǎn),就是高亮判斷 {if $m[moduleid]==$moduleid} class="menuon"{/if}
是否新窗口打開判斷 {if $m[isblank]} target="_blank"{/if}
這個(gè)東西實(shí)在是太簡(jiǎn)單了,都沒啥解釋的,會(huì)點(diǎn)模板制作的同學(xué),一看就懂了。
get_maincat()分類調(diào)用方法 get_mainarea()詳解
get_maincat()是destoon系統(tǒng)封裝好的一個(gè)調(diào)用分類的函數(shù)
調(diào)用方法為:
{php $maincat=get_maincat(參數(shù)一,參數(shù)二,參數(shù)三);}
{loop $maincat $k $v}
<a href="{$MOD[linkurl]}{$v[linkurl]}">{$v[catname]}</a>
{/loop}
參數(shù)詳解:
參數(shù)一、要調(diào)用的分類上級(jí)id,如果調(diào)用頂級(jí),則填0
參數(shù)二、模塊id,如果是在網(wǎng)站首頁調(diào)用分類,必須指定id,如果是在頻道頁面調(diào)用分類,使用$moduleid,表示調(diào)用當(dāng)前頻道的分類。
參數(shù)三、推薦級(jí)別,指要調(diào)用分類的推薦級(jí)別,該級(jí)別在后臺(tái)每個(gè)模塊管理下面的分類管理里設(shè)置,默認(rèn)為1
注:參數(shù)一,二為必填參數(shù),參數(shù)三可選,不填則表示不限制調(diào)用的級(jí)別。
在destoon每個(gè)頻道的分類列表頁面官方已經(jīng)在php中給我引入了get_maincat()
所以我們調(diào)用時(shí),直接使用:
{loop $maincat $k $v}
<a href="{$MOD[linkurl]}{$v[linkurl]}">{$v[catname]}</a>
{/loop}
get_maincat()調(diào)用小技巧
給參數(shù)一傳入動(dòng)態(tài)變量$catid,便可實(shí)現(xiàn)接收url中的catid參數(shù),實(shí)現(xiàn)動(dòng)態(tài)調(diào)用子分類,在分類頁面官方已經(jīng)封裝好了,所以直接使用
{loop $maincat $k $v}
<a href="{$MOD[linkurl]}{$v[linkurl]}">{$v[catname]}</a>
{/loop}
便可實(shí)現(xiàn)調(diào)用當(dāng)前分類下的子分類。
當(dāng)前分類高判斷:{if $v[catid]==$catid} class="高亮樣式"{/if}
get_mainarea()是destoon封好的一個(gè)用于調(diào)用地區(qū)數(shù)據(jù)的函數(shù)
get_mainarea()只有一個(gè)參數(shù),
get_mainarea(參數(shù)一)
參數(shù)一:上級(jí)地區(qū)id,調(diào)用頂級(jí)地區(qū)(省份),填寫0,調(diào)用其它地區(qū)填寫指定地區(qū)id,調(diào)用當(dāng)前分站地區(qū)下面的地區(qū),填寫$cityid。
調(diào)用方法:
{php $mainarea=get_mainarea(0);}
{loop $mainarea $i $v}
<a href="{$MOD[linkurl]}search.php?areaid={$v[areaid]}" rel="nofollow">{$v[areaname]}</a>
{/loop}
模板屬性:
地區(qū)名:{$v[areaname]}
地區(qū)連接:{$MOD[linkurl]}search.php?areaid={$v[areaid]},如果是在首頁調(diào)用或要連接到指定頻道的地區(qū)內(nèi)容,請(qǐng)使用{$MODULE[模塊id][linkurl]}search.php?areaid={$v[areaid]}
注意:
地區(qū)的連接地址是連接到search.php搜索頁面篩選的,如果要在當(dāng)前頁面篩選需要對(duì)當(dāng)前頁面進(jìn)行二次開發(fā)。
destoon常量全局變量說明及使用
什么是destoon常量?
destoon常量是指destoon官方的開發(fā)者在開發(fā)時(shí)封裝在destoon程序中的一些系統(tǒng)設(shè)置參數(shù)
這些參數(shù)是固定的,我們是不能修改的,也不需要去修改。(PS:只要你牛掰,系統(tǒng)全改了也行)
比如我們的網(wǎng)站首頁地址:DT_PATH,站點(diǎn)安裝目錄路徑:DT_ROOT,風(fēng)格目錄網(wǎng)址:DT_SKIN等。
常量怎么使用?
常量的使用辦法很簡(jiǎn)單
在php中使用,直接 使用:DT_ROOT
在模板中使用,加上花括號(hào)即可,如:{DT_ROOT}
destoon模板制作時(shí)常要用到的常量主要有三個(gè):
站點(diǎn)首頁網(wǎng)址:{DT_PATH}
風(fēng)格目錄網(wǎng)址:{DT_SKIN}
VIP名稱:{VIP}
至于其它的常量,都是在二次開發(fā)時(shí)php文件中才用到的,我們模板小白不用搭理它們。
什么是destoon系統(tǒng)變量
destoon系統(tǒng)變量就是destoon后臺(tái)一些設(shè)置參數(shù),官方程序大牛給我們封裝成了系統(tǒng)變量,讓我們能小白樣的調(diào)用。
系統(tǒng)變量的調(diào)用方法是:
花括號(hào),$符號(hào),變量名稱;PS:destoon中花括號(hào)是萬能的,所有的標(biāo)簽調(diào)用都是用{}包起來的。
示例:{$DT_IP} 當(dāng)前訪問者的ip地址
destoon系統(tǒng)變量的分類
destoon系統(tǒng)變量主要有以下幾類:
系統(tǒng)封裝變量:
這些變量是destoon開發(fā)者封裝在php中,通過程序獲取然后賦值給變量,讓我們?cè)谀0逯心苁褂煤?jiǎn)單方法調(diào)用。
如:
當(dāng)前時(shí)間:{$DT_TIME},當(dāng)前IP:{$DT_IP},當(dāng)前網(wǎng)址URL:$DT_URL等等。
提示:系統(tǒng)變量是不能通過網(wǎng)站后臺(tái)設(shè)置和修改的。
網(wǎng)站設(shè)置變量:
用來調(diào)用destoon后臺(tái)網(wǎng)站設(shè)置中的設(shè)置參數(shù),被destoon開發(fā)大牛封裝成了一個(gè)數(shù)組 $DT
調(diào)用方法:{$DT[參數(shù)名稱]},參數(shù)名稱獲取方法:參考前輩筆記,標(biāo)簽手冊(cè),如果沒有,打開后臺(tái)網(wǎng)站設(shè)置,你要調(diào)用哪個(gè)設(shè)置的值,用右健查看網(wǎng)頁元素,看他的input的name 值是多少。
我們看到的name值定是 setting[telephone],我們只要[]中的單詞,復(fù)制替換到{$DT[]}中
于是{$DT[telephone]},成功將網(wǎng)站設(shè)置里面的客服電話號(hào)碼調(diào)用了出來。
擴(kuò)展功能模塊變量:
和網(wǎng)站設(shè)置變量的區(qū)別就是,這是擴(kuò)展模塊的設(shè)置,封裝的數(shù)組是,$EXT
調(diào)用方法和網(wǎng)站設(shè)置相同: {$EXT[參數(shù)名稱]}
當(dāng)前模塊設(shè)置:
當(dāng)前模頻道的模塊設(shè)置調(diào)用,使用方法參考網(wǎng)站設(shè)置。
封裝數(shù)組:$MOD
只能在頻道下調(diào)用,首頁,列表,內(nèi)容,搜索調(diào)用,在網(wǎng)站首頁不能使用。
示例: {$MOD[linkurl]} 當(dāng)前頻道連接
系統(tǒng)模塊信息變量:
調(diào)用的是后臺(tái)系統(tǒng)設(shè)置,模塊管理中的模塊信息,所有可調(diào)用的字段都存儲(chǔ)在destoon_module表里。
封裝數(shù)組:$MODULE
調(diào)用方法:{$MODULE[模塊id][字段]}
示例:{$MODULE[5][name]} 供應(yīng)頻道名稱
當(dāng)前登錄會(huì)員信息:
調(diào)用當(dāng)前登錄會(huì)員的相關(guān)信息,變量名稱以 $_開頭
當(dāng)前會(huì)員組權(quán)限信息:
調(diào)用當(dāng)前會(huì)員所在會(huì)員組的相關(guān)設(shè)置信息,
封裝函數(shù):$MG
調(diào)用方法:{$MG[參數(shù)名稱]}
示例:{$MG[groupname]} 當(dāng)前會(huì)員組名稱
注: destoon其它還封裝一些設(shè)置數(shù)組,具體請(qǐng)參考手冊(cè),因?yàn)樵谀0逯谱髦胁恍枰褂玫?,這里就不一一介紹了。
樂發(fā)網(wǎng)超市批發(fā)網(wǎng)提供超市貨源信息,超市采購(gòu)進(jìn)貨渠道。超市進(jìn)貨網(wǎng)提供成都食品批發(fā),日用百貨批發(fā)信息、微信淘寶網(wǎng)店超市采購(gòu)信息和超市加盟信息.打造國(guó)內(nèi)超市采購(gòu)商與批發(fā)市場(chǎng)供應(yīng)廠商搭建網(wǎng)上批發(fā)市場(chǎng)平臺(tái),是全國(guó)批發(fā)市場(chǎng)行業(yè)中電子商務(wù)權(quán)威性網(wǎng)站。
本文內(nèi)容整合網(wǎng)站:百度百科、知乎、淘寶平臺(tái)規(guī)則
本文來源: Destoon7.0仿站必備模板標(biāo)簽