當前位置:
首頁 > 最新 > DedeCMS常用標籤講解筆記整理

DedeCMS常用標籤講解筆記整理

先前課程介紹了,網站的模板就如同一件衣服,衣服的好壞直接決定了網站的好壞,很多網站一看界面就知道不是什麼好站點,再一看內容都是千篇一律,這種站點沒有特色看的人就少,所以模板的重要性就在於此。

模板的製作也需要簡單,目前從很多程序的模板機制看,織夢的模板機制是最簡單實用的,通過學習織夢的標籤,能夠很好的把美工、程序結合起來,並且織夢的模板引擎機制也容易明白,基本上就是想到就能做到。

大家在課前先去下載《DedeCMS V5.3模板標籤參考手冊》

在之前的課程中,我們也介紹了模板的解析原理,我們來回顧下:

這個是我們最常用的一個arclist標記,這個標記主要功能就是用於調用文檔內容,以列表的形式顯示在前台頁面中。

系統首先讀取模板文件,然後第一步就是解析標記,解析標記就是將整個標籤的屬性、屬性值提取出來,讓後根據這些不同的屬性值來調用不同的內容。這個我們在後面單獨的幾個標記中具體說明。

我們下面來了解下DedeCMS模板文件的結構,網站內容顯示部分的模板主要存放在根目錄的/templets/模板目錄(默認為default)下面,當然你也可以根據自己的路徑進行修改,這裡面的文件都是有相應的規則。

這裡是模板文件命名規範:

(1)index_識別ID.htm:表示板塊(欄目封面)模板;

(2)list_識別ID.htm:表示欄目列表模板;

(3)article_識別ID.htm:表示內容查看頁(文檔模板,包括專題查看頁);

(4)search.htm: 搜索結果列表模板;

(5)index.htm: 主頁模板;

這些模板都是可以通過系統後台對其進行指定,系統默認會讀取這些模板內容

不同的標籤作用域也不相同,這個在官方提供的標籤說明中都有列出,所以在使用標籤的時候一定要看好標籤的作用域,例如這個標籤只能在列表頁使用,如果放到首頁、內容頁那是不會有效果的,所以在閱讀手冊、製作模板的時候需要注意。

下面我們來從不同的常用標籤來講解,我們依次順序為:arclist(arclistsg)標籤、list標籤、field、global。這個在課前我們已經說明過。

arclist(arclistsg)標籤

這個標籤是系統中非常常用的調用標籤,主要功能就是通過指定標籤的屬性調用後台發布的內容,這個標籤是一個全局標籤,也就是說,這個標籤可以在首頁、列表頁、內容頁等多個地方進行使用。

當然我們可以通過系統後台的[模板]-[智能標記嚮導]來生成arclist標籤,我們只需要指定不同的調用屬性、指定單條記錄樣式(底層模板),直接生成即可,生成的標籤可以直接使用到相應的模板中去。

我們這裡先在後台添加一些測試數據,創建兩個欄目,名字分別為「甲欄目」、「乙欄目」,並且在兩個欄目分別中添加4篇文章。這裡我們可以看到「[ID:13]」,即甲欄目的欄目ID為13,乙欄目的欄目ID為14。

甲欄目中的2篇文章在屬性中設置為「推薦[c]」和「頭條[h]」,乙欄目中一篇內容設置為「推薦[c]」。

因為這裡arclist標籤是屬於全局標記,我們可以在系統後台[模板]-[全局標記測試]中進行測試。

基本的調用我們本節課就不多說,這裡我們講解這個標記幾個非常用調用。1.常規屬性的應用;2.附加欄位的調用;3.自定義函數function的使用;4.PHP編程擴展。

我們看下面這個調用標籤:

[field:title/]

{/dede:arclist}

這裡的flag=』c』就是調用的發布文檔中「推薦[c]」,當然引申下,如果調用「頭條[h]」,則flag=』h』,所以我們在使用標記調用那些推薦、圖文的時候可以對這些進行修改,當然系統後台中[系統]-[自定義文檔屬性]來修改相關的參數。

[field:title/]

{/dede:arclist}

這裡主要講的是一個limit屬性的使用,這個屬性類似於MySQL中SQL查詢語句中的limit,通過這個屬性來控制調用的記錄ID和記錄條數。我們通過手冊查閱這個屬性的相關內容:

limit= 起始ID,記錄數"(起始ID從開始)表示限定的記錄範圍(如:limit= 1,2 表示從ID為1的記錄開始,取2條記錄)。

有了這個屬性我們可以做出一種效果,就是一些門戶網站的不規則長度新聞標題的樣式,我們來查看以下的代碼:

[field:title/]

{/dede:arclist}

[field:title/]

{/dede:arclist}

[field:title/]

{/dede:arclist}

這裡調用的3條信息就是上面limit= 0,3 調用的3條內容,只不過我們通過limit對其進行了再次的拆分,再結合titlelen屬性控制標題的長度達到不規則標題的效果。

接下來我們再來看下調用附加表欄位,織夢的內容模型有2種類型,一種是主從表,另外一種就是單表獨立,主從表形式的就涉及到一個主表和一個附加表,系統的主表是#@__archives,我們可以查看系統後台[系統]-[SQL命令行工具],如果默認前綴為dede,則會有一個dede_archives的表,這個表中記錄的都是常用欄位。

一般附加表都是以#@__addon[識別ID]命名的,例如普通文章的附加表就是#@__addonarticle,軟體模型的附加表就是#@__addonsoft,不同模型的附加欄位可以通過系統後台[核心]-[內容模型管理],編輯一個模型,查看裡面的「欄位管理」,一般我們調用都是調用這些內容。

我們在系統後台添加了一個軟體下載的欄目,欄目設置模型為軟體,然後我們發布幾條軟體下載的信息,接下來我們需要通過arclist這個標籤將軟體的一些信息調用到網站首頁中進行顯示。

我們可以查看到下面一些軟體添加的信息內容。

我們查看下面的代碼:

軟體標題:

[field:textlink/]

語言類型:

[field:language/]

軟體類型:

[field:softtype/]

{/dede:arclist}

我們通過addfields=』』這個屬性來指定調用的附加欄位,同時我們需要指定調用模型的id,即channelid,這個可以在系統後台的內容模型管理中查看。

當然我們也可以通過這種方式在arclist標籤中調用文章的內容

文章標題:[field:textlink/]

文章內容:[field:body/]

{/dede:arclist}

如果我們文章內容很長,例如是添加了一篇新聞,這樣通過body調用出來的內容會出現內容很長的問題,這時候我們希望能夠限制調用內容的長度,但是我們調用附加表的時候沒有這個屬性來控制調用附加表的長度,所以只有通過自定義函數來對其進行控制,自定義擴展函數function在織夢的標籤中經常使用,下面我們對其進行一個簡單的實例。

我們這裡用到一個idlist屬性,這個屬性就是調用指定id的文章,我們這裡添加調用的是id為1156的文章。

下面我們來對內容欄位使用自定義函數來控制長度,我們將標籤修改成以下形式:

文章標題:[field:textlink/]

文章內容:[field:bodyfunction= cn_substr(@me,100) /]

{/dede:arclist}

//中文截取2,單位元組截取模式

function cn_substr($str,$slen,$startdd=0)

當然,這個文件裡面還有很多的常用函數,這些函數都起不同的作用,例如轉換日期、去除HTML標記、獲取IP等等,我們在二次開發標籤中也介紹了這些函數的功能和用處,理解這些函數需要有一定的PHP基礎。

在function= cn_substr(@me,100) 中出現了一個「@me」,這個「@me」代表的是標籤本身,例如[field:bodyfunction= cn_substr(@me,100) /],這個就是將標籤[field:body/]輸出的內容通過@me傳遞到cn_substr這個函數中進行處理。

當然我們也可以自己編寫函數,只需要創建/include/extend.func.php文件,編寫相應的自定義函數即可。

接下來我們介紹變數的簡單編程,我們首先來看一段標籤標記:

[field:title/]

[field:senddate runphp= yes ]

$ntime = time();

$onetime= 3600 *2;

if(($ntime - @me)

else @me="";

[/field:senddate]

{/dede:arclist}

這裡我們將2小時前發布的內容後面增加一個(new),這裡我們應用到了標籤的PHP擴展。我們這裡用到的是變數[field:senddate/]這個變數顯示的是發布時間,因為我們需要判斷2小時內最新發布的文檔,所以需要通過這個變數進行判斷。這裡變數中屬性runphp= yes 為開啟PHP編程,然後可以通過下面的方式進行編程擴展。

[field:senddate runphp= yes ]

$ntime = time();//當前時間

$onetime= 3600 *2;//距離的時間數目

if(($ntime - @me)

else @me="";//判斷,如果相差時間小於2小時加紅,否則沒有內容

[/field:senddate]

當然如果懂PHP相關內容,還有很多的PHP擴展,這裡主要是將處理後的內容通過@me來返回。

當然這裡還有arclistsg標籤,這個標籤也是用於調用發布的文檔內容,但是不同於arclist,這個標籤調用的是單表模型的內容,我們系統中的分類信息就是一個單表模型的例子,在使用上,這個標籤和arclist相同,所以在這裡不再重複說明,只是arclistsg標籤調用時候需要加上channelid之類的。

[field:title/]

{/dede:arclistsg}

list標籤

{/dede:list}這個標籤也是系統常用的標記,這個標記主要是用於列表頁顯示列表數據,這個標籤不是全局標記,所以不要將這個標記應用到非list_*.htm這種模板中去,當然我們後台的全局標記測試也無法測試這個標記,調試這個標記最簡單的辦法,就是通過網址中http://www.adb.com/plus/list.php?tid=13這種形式來測試。

測試調試模板的時候需要將系統後台的模板緩存關閉,可以在後台[系統]-[系統基本參數],在性能選項卡中將「是否啟用模板緩存」關閉即可。

這個標籤在列表頁通常是和搭配使用的,這個是分頁標籤,就是顯示可以讓用戶點擊「上一頁」、「下一頁」這種標記。

List標籤中的變數也可以進行function自定義函數或者PHP擴展,這裡就不重複介紹,這裡介紹下在list標籤中調用附加欄位。

與arclist不同,list中調用附加欄位需要編輯內容模型,例如我們編輯軟體模型的模板文件,即 empletsdefaultlist_soft.htm,我們可以查看到以下代碼:

[field:array runphp= yes ]@me = (empty(@me[ litpic ]) ? "" : ""); [/field:array]

[field:title/]

上傳日期:[field:pubdate function="GetDateTimeMK(@me)"/]

推薦級別:[field:softrank function= GetRankStar(@me) /]

軟體語言:[field:language/]

瀏覽次數:[field:click/]

[field:description/]...

{/dede:list}

這個裡面的附加欄位並沒有通過制定某個屬性獲得,而是在系統後台中,[核心]-[內容模型管理],編輯軟體內容模型,在選項「列表附加欄位」加上相關欄位的內容。

field、global標記

我們在網站程序中經常遇到常量、變數,一些系統的設置我們可以認為是系統常量,一般這些常量可以在系統後台的[系統]-[系統基本參數]中進行設置,系統後台設置的參數都會有一個對應的變數名,我們可以使用標籤這種形式進行調用。

例如我們使用標籤調用系統後台設置的版權信息。

當然我們也可以自己在系統後台添加這樣的變數,例如添加一個變數名字叫cfg_tongji,用來存儲統計代碼的。並且在代碼中加入相應的代碼語句。

這個時候我們就可以通過來調用統計代碼,我們只需要將這個插入到模板的相應位置即可,如果以後需要增加統計的代碼,只需要在系統後台直接設置一下就可以了,一勞永逸。

這種標籤可以在全局進行使用,並且這個調用的值同系統後台設置關聯非常緊密,並且這些標籤的內容並不會因為放在不同的模板,因為不同欄目顯示而值不相同,所以可以在這裡理解為一種常量。

另外一種就是field,即變數,通常我們在模板中見到的就是,這個變數會隨著不同頁面的變化而變化,所以成為是系統變數。

我們查看標籤手冊,「field|常用變數」部分的內容,這部分內容主要是將系統不同頁面中的變數列舉出來,我們在模板製作的時候可以指定不同的變數,調用的值也大不相同。

當然這些變數也是可以進行自定義函數的,例如我們對,來對這個title變數進行自定義。

總結

織夢的標籤是非常靈活的,在這裡我們只是講解了3個常用類型的模板標籤,並且例句了一些實例,但這些並不能涵蓋全部,具體的標籤使用技巧還需要大家去思考,自己去在製作模板中進行摸索。

最後我們對今天的課程進行一個回顧:

1.模板標籤簡介及原理

2.模板文件目錄以相關文件的說明

3.常用標記介紹

3.1arclist(arclistsg)標籤

3.2list標籤

3.3field、global標籤

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 學技巧 的精彩文章:

TAG:學技巧 |

您可能感興趣

DedeCMS調用友情鏈接數量及解除限制
dedecms建站只需要準備這三樣東西,超級簡單,新手建站必讀!