深入理解dedecms中的底層模版的含義

底層模板(Innertext),底層模板實(shí)際上就是對(duì)于有多條記錄的模板輸出,用戶手工去指定單個(gè)記錄的樣式对蒲。
因?yàn)檫@個(gè)概念很虛線,那么這個(gè)地方還是通過(guò)實(shí)踐去說(shuō)明吧锻霎。
大家在標(biāo)簽測(cè)試的地方輸入:

  • 這是使用默認(rèn)底層模板的標(biāo)簽:
{dede:arclist row=10}
{/dede:arclist}
  • 這是手工指定底層模板的標(biāo)簽:
{dede:arclist row=5}
  <a href=’[field:arcurl/]’>[field:title /]</a> 點(diǎn)擊:[field:click/] <br />
{/dede:arclist}

有一點(diǎn)需注意的是,在沒(méi)有指定底層模板(Innettext)的時(shí)候揪漩,系統(tǒng)一般調(diào)用 templets/system 里的
相應(yīng)該文件作為底層模板旋恼。

例如:

{dede:arclist row=10}{/dede:arclist}

它實(shí)際由系統(tǒng)默認(rèn)調(diào)用了templets/system/part_arclist.htm 這文件的東西作為底層模板。這文件的內(nèi)容是

<a href="[field:filename /]">[field:title /]</a>

那么

{dede:arclist row=10}{/dede:arclist}

就等同于

{dede:arclist row=10}·<a href="[field:filename /]">[field:title /]</a><br/>

{/dede:arclist}既能用短標(biāo)記奄容,也能直接定義樣式冰更,又不依賴數(shù)據(jù)庫(kù),這是dedecms模板和其它模板的最大區(qū)別昂勒。

在標(biāo)記之間 [field:…/] 這些就是底層模板變量蜀细,這些標(biāo)記一般也是屬于 Dedecms 標(biāo)簽的模式,只是 { … } 符號(hào)改為了 [ … ]叁怪,因此底層模板中的標(biāo)簽也是具有DedeCms標(biāo)簽的特性的审葬,例如深滚,在底層模板中使用 [field:global name=’cfg_webname’/] 同樣可以表示全局變量 $cfg_webname奕谭。

在此我簡(jiǎn)單介紹一下常用的 arclist 標(biāo)記的底層模板字段及意義

arclist的底層模板字段實(shí)際上是對(duì)應(yīng)相應(yīng)該主索引表的,在文檔模板中則對(duì)應(yīng)該主表和附加表痴荐,主
表字段是一樣的血柳,我等會(huì)介紹一下,附加表的可以在模型里找生兆。
arclist常用的字段有:
ID(同 id),
title(標(biāo)題),
color,
typeid(欄目ID),
description(摘要难捌,同 info),
writer(作者),
shorttitle(短標(biāo)題),
memberid(會(huì)員ID),
pubdate(發(fā)布時(shí)間),
click,
litpic(縮圖圖,同 picname),
typename(欄目名稱),
arcurl(網(wǎng)址鸦难,同 filename),typeurl(欄目網(wǎng)址)stime(pubdate 的"0000-00-00"格式根吁,等同于[field:pubdate function="strftime('%y-%m-%d',@me)"/]),
textlink(等同<a href='[field:arcurl /]'>[field:title/]</a>),
typelink(等同<a href='[field:arcurl /]'>[field:title/]</a>),
imglink(等同<a href='[field:arcurl /]'><img src='[field:picname/]' border='0'></a>),
image(等同<img src='[field:picname/]'>),
大家需注意的一個(gè)問(wèn)題是:[field:標(biāo)記名稱/]這種寫(xiě)法是僅在底層模板中才用的。在文檔模板中合蔽,字段是用 {dede:field name='title'/}這樣形式表示的击敌。不過(guò)在一種特殊的情況下,Innertext是無(wú)效的拴事,就是指定了 runphp=’yes’ 屬性沃斤,:A圣蝎、function 擴(kuò)展;B衡瓶、在Innertext中直接編程徘公。

一、那么首先說(shuō)
A哮针、function 擴(kuò)展:
在標(biāo)記中关面,可以使用 {dede:標(biāo)記名稱 function=”函數(shù)名(@me,其它參數(shù))” /}這樣模式對(duì)標(biāo)記的值進(jìn)行處理,其中 @me 就是表示標(biāo)記當(dāng)前的值诚撵,最終獲得的結(jié)果是這個(gè)函數(shù)返回的值缭裆。
大家不妨測(cè)試一下下面這個(gè)標(biāo)簽:{dede:global function="file_get_contents('http://www.baidu.com')" /}
下面再舉個(gè)實(shí)用的例子(測(cè)試一下):

{dede:arclist row=5}
<a href='[field:arcurl/]'>[field:title /]</a>
[field:pubdate function="strftime('%y-%m-%d %H:%M',@me);"/]<br />
{/dede:arclist}

從實(shí)例中大家可以注意到,{dede:xx/}和[field:xxx/}都支持function擴(kuò)展寿烟。實(shí)際上 [field:xxx/] 這種模式也是dede標(biāo)簽解析器解析的澈驼,所以作用一樣,它只是把 dede 換成 field { 換成 [在這里筛武,function 屬性的 function 不僅是用PHP自帶的缝其,用自己定義的也行。不過(guò)要注意function的格式徘六,自定義的function不能用echo這樣的輸出内边,而是返回一個(gè)字符串,這樣就行了待锈。
寫(xiě)好的函數(shù)放入 include/inc_channel_unit_functions.php 文件漠其,因?yàn)閐ede核心都會(huì)調(diào)用這個(gè)文件。

這里舉個(gè)簡(jiǎn)單的函數(shù):
function testMyFunc(str){returnstr." 增加了我的東西哦竿音!";}
在標(biāo)簽中使用:
{dede:global name='cfg_webname' function='testMyFunc(@me)'/}
用function擴(kuò)展的好處是既可以增強(qiáng)系統(tǒng)的功能和屎,又保持標(biāo)記的簡(jiǎn)潔。

二春瞬、下面介紹的是另一種擴(kuò)展 B
在Innertext中直接編程這種方式和function編程的不同之處是柴信,你可以把PHP代碼直接寫(xiě)入到標(biāo)簽的底層模板代碼的地方,不過(guò)需要注意的是宽气,在這里的PHP代碼并非完全意義上的PHP代碼随常,它必須符合Dede限定的格式,即是最終返回值返回到 @me 變量中萄涯,同樣的是用 @me 表示標(biāo)記的最初的值绪氛。
使用格式: {dede:標(biāo)記名稱 runphp=yes} PHP代碼{/dede:標(biāo)記名稱}
大家測(cè)試一下這個(gè)代碼:

{dede:global name='cfg_webname' runphp='yes'}
  $baidu = file_get_contents("http://www.baidu.com");
  preg_match_all("/<title>(.*)<\/title>/isU",$baidu,$baidus);
  @me = $baidus[1][0];
{/dede:global}

這里的 cfg_webname 不再顯示當(dāng)前站點(diǎn)名了,因?yàn)?@me =$ baidus[1][0]; 改變了它的值涝影。
在使用標(biāo)記內(nèi)編程或function擴(kuò)展時(shí)枣察,很多情況都可能會(huì)調(diào)用數(shù)據(jù)庫(kù)。在V5版本中袄琳,DedeCms的數(shù)據(jù)庫(kù)進(jìn)行了改進(jìn)询件,無(wú)論你新建多少個(gè)類的對(duì)像燃乍,最終打開(kāi)的鏈接是只有一個(gè)的,并且會(huì)生成一個(gè) $dsql 的全局?jǐn)?shù)據(jù)庫(kù)類的變量宛琅。
以往有些懂dedecms數(shù)據(jù)庫(kù)類的人在調(diào)用function擴(kuò)展的時(shí)候刻蟹,一般的做法是用 $dsql = new DedeSql(false); 這樣新建一個(gè)類。實(shí)際上在V5中是不需要這樣的嘿辟。直接用 global $dsql;聲明一下就能使用舆瘪,并且在函數(shù)體中不要自行關(guān)閉(即執(zhí)行dsql->Close()否則可能出錯(cuò)。
那么在這里舉個(gè)簡(jiǎn)單的例子(測(cè)試代碼):

{dede:global runphp='yes'}
  global $dsql;
  $restr = '';
  $dsql->SetQuery("Select * From dede_feedback where ischeck=1 order by ID desc limit 5");
  $dsql->Execute('feedback');
  while($row = $dsql->GetArray('feedback')){
      $restr .= "<a target='_blank' href='/plus/feedback.php?arcID={$row['aid']}&urlindex={$row['urlindex']}'>       {$row['arctitle']}</a> -- ".cn_substr($row['msg'],200);
  }
@me = $restr;{/dede:global}

這代碼是調(diào)用最新評(píng)論的红伦。dede本身沒(méi)有提供直接調(diào)用評(píng)論的標(biāo)簽英古,一般懂的人用loop標(biāo)簽調(diào)用,不過(guò)在本版中昙读,新增的SQL標(biāo)簽會(huì)更簡(jiǎn)單召调。
在 DedeCms V5 中有一個(gè)標(biāo)簽{dede:sql sql="SQL語(yǔ)句 limit 記錄"}底層模板{/dede:sql}
我現(xiàn)在改一下剛才調(diào)用評(píng)論的地方(測(cè)試代碼):
{dede:sql sql="Select * From dede_feedback where ischeck=1 order by ID desc limit 5"}
<a target='_blank' href='/plus/feedback.php?arcID=[field:aid/]&urlindex=[field:urlindex/]'>[field:arctitle/]</a> -- [field:msg/]<hr />
{/dede:sql}
這結(jié)果應(yīng)該和上面的代碼是一樣的。
為了補(bǔ)允調(diào)用全站數(shù)據(jù)的不足蛮浑,V5中新增了 arcfulllist 標(biāo)記唠叛,它的作用與 arclist 標(biāo)記有點(diǎn)類同,不示不同的是 arcfulllist 里的文件名有時(shí)候可能是動(dòng)態(tài)的沮稚,這因?yàn)樗鞘褂盟阉鲿r(shí)用的那個(gè)簡(jiǎn)單索引表艺沼。在專題文章、相關(guān)文章中默認(rèn)都是使用 arcfulllist 調(diào)用指定的 id 的文檔的蕴掏。
由于這標(biāo)記可能造成文件名不同步障般,我們系統(tǒng)后面增加了文檔名批量修正功能,但為了防止忘記操作盛杰,建議建立欄目就設(shè)定好文檔命名規(guī)則挽荡,以后不要經(jīng)常更改。
一就是常用的模型饶唤,二是新出的模塊徐伐,三是插件贯钩。
大家進(jìn)到Dede管理后臺(tái)“頻道管理->內(nèi)容模型管理”的地方可以看到:
分類信息專題普通文章圖片集軟件Flash產(chǎn)品這些都是內(nèi)置的模型募狂。大家也可以自己新建一個(gè)模型,有不少人問(wèn):Dedecms的文本存儲(chǔ)在哪里呀角雷?下面我一步一步的教大家建立一個(gè)用文本存儲(chǔ)的文章模型祸穷。
首先“增加一個(gè)新模型”,建立好后“添加字段”勺三,然后轉(zhuǎn)向欄目管理的地方雷滚。建立好后轉(zhuǎn)到欄目管理的地方新建一個(gè)頂級(jí)欄目,內(nèi)容模型選剛才建好的那個(gè)吗坚。建立好欄目后祈远,隨意在那個(gè)欄目增加一篇文章呆万。預(yù)覽文章,會(huì)發(fā)生新增的模型顯示的文檔〕捣荩現(xiàn)在再回到頻道模型管理的地方谋减,在新建的頻道點(diǎn)擊“模板”。
對(duì)于類同的模型扫沼,最好是把類同的模板作為當(dāng)前模型的模板出爹。如剛才建立的模型,實(shí)際上模板和普通文章模板是一樣的缎除。
關(guān)于字段的問(wèn)題严就,在文檔模板中字段是用{dede:field name='字段名'/}表示。例如在軟件模型中文件類型 filetype 單行文本(varchar) 固化表單 [修改]
語(yǔ)言 language 單行文本(varchar) 固化表單 [修改]
軟件類型 softtype 單行文本(varchar) 固化表單 [修改]
授權(quán)方式 accredit 單行文本(varchar) 固化表單 [修改]
操作系統(tǒng) os 單行文本(varchar) 固化表單 [修改]
軟件等級(jí) softrank 整數(shù)類型 固化表單 [修改]
官方網(wǎng)址 officialurl 單行文本(varchar) 固化表單 [修改]
語(yǔ)言這字段就可以用 {dede:field name='language'/} 表示器罐,此外梢为,title , keywords,description 這些實(shí)際上主索引表的東西,剛才說(shuō)模板時(shí)已經(jīng)介紹過(guò)它的含義了轰坊。
有用戶提過(guò)一個(gè)問(wèn)題抖誉,就是關(guān)于自定義模型如何在表布表單中調(diào)整字段的順序。Dedecms目前沒(méi)有這選項(xiàng)衰倦,需要改的必須用 phpmyadmin 進(jìn)入 it_channeltype 這個(gè)表袒炉。編輯 fieldset 這里的XML,調(diào)一下位置就行了樊零。
此外大家要區(qū)別一下自動(dòng)模型和系統(tǒng)模型的區(qū)別我磁,系統(tǒng)模型是固化了的,要調(diào)整必須自己修改程序驻襟,
對(duì)于普通人是無(wú)法改的夺艰。不過(guò)這版本允許自行增加一些字段在里面。
因?yàn)檫@次講座是個(gè)中級(jí)講座沉衣,模型這塊我就不太深入的講解了郁副,最后介紹一下插件和模塊。
插件和模塊DEDE增加新模型,必須一步到位,如果不用phpmyadmin,輸入錯(cuò)誤什么的,在后臺(tái)修改不了豌习。
插件在Dedecms中是就是一些小的實(shí)際的程序的集合存谎,它可以簡(jiǎn)單的安裝和刪除,不過(guò)安裝和刪除僅去掉數(shù)據(jù)庫(kù)的索引記錄肥隆,并非進(jìn)行真正的安裝既荚。
官方網(wǎng)前自帶的插件有:
文件管理器站內(nèi)新聞發(fā)布友情鏈接模塊留言簿模塊投票模塊論壇擴(kuò)展廣告管理正則規(guī)則測(cè)試器隨機(jī)模
板防采集木馬掃描檢測(cè)數(shù)據(jù)轉(zhuǎn)換與導(dǎo)入實(shí)際上很多情況下單用插件是滿足不了系統(tǒng)的需求的,實(shí)際上很多情況下單用插件是滿足不了系統(tǒng)的需求的栋艳。因此Dedecms V5提出了模塊的概念恰聘。
模塊是對(duì)系統(tǒng)模型的一個(gè)補(bǔ)充,因?yàn)镈edecms的模板解析機(jī)制相對(duì)復(fù)雜,如果所有東西都依賴模型晴叨,就
結(jié)果只有一個(gè):速度越來(lái)越慢凿宾。而使用模塊就補(bǔ)充了這方面的不足。在 Dedecms V5 的菜單中“擴(kuò)展模塊”里放的就是Dedecms的模塊兼蕊。
模塊文件是一個(gè)標(biāo)準(zhǔn)化的xml文件菌湃,它即包含了模塊安裝刪除的數(shù)據(jù),也偶包含了圖片等二進(jìn)制文件遍略。有些人問(wèn)我惧所,為什么在DedeCms V5的安裝包里沒(méi)發(fā)現(xiàn)ask、group等目錄绪杏?因?yàn)檫@些東西都封裝起來(lái)了下愈,如果你不安裝它,是不會(huì)看到這些文件的蕾久,這樣就能盡大限度滿足一些站長(zhǎng)想要功能多势似,一些想要功能實(shí)用的需求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末僧著,一起剝皮案震驚了整個(gè)濱河市履因,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盹愚,老刑警劉巖栅迄,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異皆怕,居然都是意外死亡毅舆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)愈腾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)憋活,“玉大人,你說(shuō)我怎么就攤上這事虱黄≡眉矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵橱乱,是天一觀的道長(zhǎng)辜梳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)仅醇,這世上最難降的妖魔是什么冗美? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任魔种,我火速辦了婚禮析二,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己叶摄,他們只是感情好属韧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蛤吓,像睡著了一般宵喂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上会傲,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天锅棕,我揣著相機(jī)與錄音,去河邊找鬼淌山。 笑死裸燎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泼疑。 我是一名探鬼主播德绿,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼退渗!你這毒婦竟也來(lái)了移稳?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤会油,失蹤者是張志新(化名)和其女友劉穎个粱,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體翻翩,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡几蜻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了体斩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梭稚。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖絮吵,靈堂內(nèi)的尸體忽然破棺而出弧烤,到底是詐尸還是另有隱情,我是刑警寧澤蹬敲,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布暇昂,位于F島的核電站,受9級(jí)特大地震影響伴嗡,放射性物質(zhì)發(fā)生泄漏急波。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一瘪校、第九天 我趴在偏房一處隱蔽的房頂上張望澄暮。 院中可真熱鬧名段,春花似錦、人聲如沸泣懊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)馍刮。三九已至信夫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卡啰,已是汗流浹背静稻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匈辱,地道東北人姊扔。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像梅誓,于是被迫代替她去往敵國(guó)和親恰梢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 靜態(tài)模板類: 類文件include/dedetag.class.php 這個(gè)文件是dedecms V5.3及之前版...
    亞訊閱讀 538評(píng)論 0 1
  • 1梗掰、PHP語(yǔ)言的一大優(yōu)勢(shì)是跨平臺(tái)嵌言,什么是跨平臺(tái)?一及穗、PHP基礎(chǔ): PHP的運(yùn)行環(huán)境最優(yōu)搭配為Apache+MySQ...
    __書(shū)山有路__閱讀 1,494評(píng)論 0 15
  • 1安裝不要測(cè)試數(shù)據(jù)摧茴! 2頭尾分離,改成header.html,footer.html 用{dede:include...
    淡忘夏閱讀 638評(píng)論 0 0
  • 為了使用模板標(biāo)記不破壞文檔的可讀性埂陆,dedecms不像別的模板苛白,有時(shí)會(huì)使用直接往模板插入PHP或類似PHP的代碼,...
    亞訊閱讀 949評(píng)論 0 0
  • 今天早上4點(diǎn)鬧鐘響了 4點(diǎn)15分才開(kāi)始干活 聽(tīng)力用了45分鐘 開(kāi)始記單詞還沒(méi)記完 高等教育的要點(diǎn)還沒(méi)有背 加油焚虱,明...
    吲哚說(shuō)閱讀 151評(píng)論 0 2