網(wǎng)頁模板就是templets中的htm文件,所以編寫模板就是要編寫html。這篇文章不是關(guān)于標(biāo)簽的具體使用,而是對網(wǎng)頁模板的一些理解。包括基本的標(biāo)簽語法,封面模板,列表模板和文檔模板的關(guān)系。
一 關(guān)于標(biāo)簽
dedecms標(biāo)簽:就像html標(biāo)簽,不過是織夢自定義的,由標(biāo)簽名,屬性,和InnerText構(gòu)成。
改寫文件templets/index.htm
網(wǎng)站名:{dede:global name=cfg_webname/}<br/><br/><strong>最近登陸的會員</strong><br/>{dede:memberlist row=6 signlen=30} <a href="[field:spaceurl/]" target="_blank"> <img src="[field:face/]" width="52" height="52"/> [field:uname/]<br/> </a>{/dede:memberlist}
通過運(yùn)行網(wǎng)站主頁index.php查看結(jié)果。
像dede:global就是標(biāo)簽名,name=cfg_webname是屬性,在dede:memberlist標(biāo)簽間的就是InnerText。在織夢中,InnerText又稱為底層模板。
短標(biāo)簽:像global這種只有單邊的標(biāo)簽叫短標(biāo)簽,表示一個元素的值。
塊標(biāo)簽:像memberlist這種成對的標(biāo)簽叫塊標(biāo)簽,一般表示一系列的紀(jì)錄,像上面的代碼就表示列出6個會員的默寫信息。研究一下會發(fā)現(xiàn)這些記錄來自數(shù)據(jù)庫。
[field:XX]這個代表記錄中的某個屬性值。
總結(jié)一下,編寫模板時(shí)用到哪些語言
Html代碼+新增的dedecms標(biāo)簽語法。
Css和Js沒有新語法,以外部文件的方式調(diào)用。
Php,mysql的代碼大大減少,與數(shù)據(jù)庫查詢有關(guān)的代碼一部分被標(biāo)簽語法代替。比如說調(diào)用memberlist標(biāo)簽,就等價(jià)于訪問數(shù)據(jù)表dede_member。Php主要用于插件等新模塊的編寫和修改。
以上只是織夢標(biāo)簽語法的簡述,要編寫網(wǎng)頁模板,就要學(xué)dedecms的標(biāo)簽,詳見模板手冊。
不用全部標(biāo)簽都學(xué),學(xué)會global、field、php、arclist、list、pagelist和memberlist即可。其他需要再查。
要學(xué)習(xí)一個標(biāo)簽,要學(xué)會
1標(biāo)簽的基本語法,標(biāo)簽名
2標(biāo)簽,標(biāo)簽對應(yīng)的網(wǎng)頁模板,及標(biāo)簽的邏輯意義
3標(biāo)簽的屬性以及其對標(biāo)簽用法的控制
4標(biāo)簽背后的數(shù)據(jù)來源,及其提供的InnerText
二 模板的種類
2.1 templets文件夾
System文件夾,里面放的是默認(rèn)底層模板。當(dāng)我們在塊級標(biāo)簽間不寫任何東西時(shí),就會自動被調(diào)用來作為塊級標(biāo)簽的InnerText。
Plus文件夾,里面放的是被root_dir/plus里的php調(diào)用的模板。經(jīng)過一些研究也許能仿寫這些模板的代碼,待探究。
Default文件夾,里面放的是默認(rèn)模板,是網(wǎng)頁顯示主要的模板,如果在網(wǎng)上下一個其他的dedecms模板(非官方默認(rèn)模板),可能里面只是一個templets文件夾,因?yàn)檫@對外觀已經(jīng)足夠了。下面是default文件夾的分析。
我以前只用到index.htm,其他的文件有什么用呢?
我認(rèn)為這些文件可以分成兩類:
第一類不是一個完整的頁面,被include的(由于有了dedecms標(biāo)簽,html文檔中也可以include)。如head.htm,footer.htm等。
第二類就是完整的頁面了,呵呵。
而第二類又分為封面(index)模板,列表(list)模板,文檔(內(nèi)容,article)模板。文件夾中的index_XX.htm就是封面模板,依此類推。
2.2封面、列表和文檔模板的測試
在root_dir/index.php中的SetTemplet處把路徑改為dirname(__FILE__) . "/templets/default/
list_article.htm",顯示的內(nèi)容不太完整。這些模板要怎么用呢?一下是我探索的辦法:
打開dedecms的網(wǎng)站后臺管理(對了,請先安裝安裝數(shù)據(jù)體驗(yàn)包,這樣才有測試數(shù)據(jù))
點(diǎn)擊網(wǎng)站欄目管理
在網(wǎng)頁基礎(chǔ)中點(diǎn)更改
常規(guī)選項(xiàng)中欄目屬性是頻道封面
再選擇高級選項(xiàng)
高級選項(xiàng)中封面模板為{style}/index_article.htm
如果你安裝的數(shù)據(jù)和我是同一版本,就會知道網(wǎng)頁基礎(chǔ)是個一級欄目,底下組織了很多文章。
回到網(wǎng)站欄目管理
點(diǎn)擊預(yù)覽,會看到一個關(guān)于網(wǎng)頁基礎(chǔ)欄目的頁面。由于常規(guī)選項(xiàng)中欄目屬性是頻道封面,高級選項(xiàng)中封面模板為{style}/index_article.htm,所以網(wǎng)頁調(diào)用index_article.htm作為模板。
依此類推,如果在常規(guī)選項(xiàng)中欄目屬性是最終列表欄目,高級選項(xiàng)中封面模板為{style}/list_article.htm,則會調(diào)用list_article.htm作為模板,文檔模板也依此類推。
模板和欄目的關(guān)系
每一個欄目都有自己的三個模板,而同一個模板可被多個欄目所用。也就是說,模板只是提供了樣式,但內(nèi)容終究來至數(shù)據(jù)庫。這也說明了為什么在root_dir/index.php中的SetTemplet處改路徑不能顯示完整的內(nèi)容,因?yàn)槟0鍥]有綁定到某個具體欄目。這也是織夢作為內(nèi)容管理系統(tǒng)的特點(diǎn),把樣式和內(nèi)容分離。
再來說說文檔模板,在常規(guī)選項(xiàng)->欄目屬性處看到。作為頻道封面欄目不能發(fā)布文章的。那我們選一個最終列表欄目,如”Html”
點(diǎn)擊更改??吹匠R?guī)選項(xiàng)中欄目屬性是最終列表欄目,點(diǎn)高級選項(xiàng),就能看到文檔模板為{style}/article_article.htm,所以Html欄目下所有的文章都會以這個模板顯示。
點(diǎn)擊內(nèi)容管理里的普通文章
選擇一篇Html欄目下的文章,點(diǎn)預(yù)覽(右邊的那個綠色小球)
這時(shí)看到的是就是article_article.htm模板代表的樣式。
到這里,應(yīng)該就會如何顯示/調(diào)試封面模板、列表模板和文檔模板了。
2.3頻道
可以看見templets/default中大部分的模板都是這三類,可見其重要性。那么有index_article.htm,list_article.htm,article_article.htm就夠了,其他又是干什么的。
這就要講到頻道,頻道是欄目的類型,文章(article)頻道、圖片(image)頻道、軟件(soft)頻道(實(shí)質(zhì)是一個下載頻道)、商品(shop)頻道等。頻道是一種內(nèi)容模型,比如動漫、風(fēng)景都能用圖片頻道。所以就會有index_article.htm,index_ image.htm,index_ soft.htm,index_shop.htm。每個頻道都有自己的三種模板。
那么如何編寫模板,當(dāng)然要先學(xué)過標(biāo)簽語法
A、function 擴(kuò)展,如{dede:標(biāo)記名稱 function=”函數(shù)名(@me,其它參數(shù))” /}
B、在Innertext中直接編程,也就是之前一直用的方法
再讀一下index_article.htm,list_article.htm,article_article.htm。讀源碼是最好的學(xué)習(xí)方法^_^
總的來說,寫網(wǎng)頁具體要做的就是為每個頻道編寫網(wǎng)頁模板。
關(guān)于模板的內(nèi)容就分享到這里了。
聯(lián)系客服