POST TIME:2017-11-13 00:00
剛學習完dedecms的標簽語法,我有很多困惑,覺得標簽的意義比較抽象,不知道如何用標簽來寫一些具體的內容。如果有一些數(shù)據(jù)庫的編程經驗,就知道一個很常用的編程范例—增刪改查。比如說,我要建立的是書本的模型,有索書號,書名,類型……,之后要寫一個網頁來完成書本信息的增刪改查,這篇文章主要解決這種問題。
一頻道(內容模型)
我很長時間弄不清頻道和欄目的區(qū)別。從網上找了一些解釋如下:
欄目就是網站中導航劃分出的模塊,如百度中的新聞、網頁、貼吧等就是欄目。
頻道是欄目的類型。官方的定義是:頻道指內容模型,網站的欄目都是基于不同的模型建立的。也就是說一個頻道還可以衍生出多個欄目,一個欄目只對應于一個頻道。
查到了以上定義后,我以為對頻道和欄目已有較深刻的認識了。直到我遇到這個問題,“什么時候建立頻道,什么時候建立欄目?”
頻道對應于數(shù)據(jù)模型,當要建立一個新的數(shù)據(jù)模型,就要建立頻道。如書本模型,它和文章模型,圖片模型的數(shù)據(jù)表結構不同。一個新的模型有以下的元素:數(shù)據(jù)表,增刪改代碼。
而欄目是對應于功能而言的,就像百度中的新聞、網頁、貼吧,什么時候要添加欄目還是比較明顯的。3種模板屬于欄目的元素。
“一個頻道還可以衍生出多個欄目”這句話有點虛,實際中網頁中的內容都很飽滿,每個欄目的內容都可能很不同,除了實用的文章模型外,基本每個頻道都為一個欄目而設。
在dedecms中,有頻道>欄目>文章這幾個基本的單位。每個單位都會用id號唯一標識,頻道(cid,channel id),欄目(tid,type id),文章(aid,article id) 。
二添加模型
關于添加模型,不妨看下這篇文章。它主要講操作步驟,我會結合操作講講原理。上面提到,一個模型有數(shù)據(jù)表,增刪改代碼這兩個元素,下面就按這個思路發(fā)展。
點擊了“增加新模型”后,會看到表單中的附加表,填dede_addonXX,XX就是前面填寫的名字標識。Dedecms中的文章不是指具體的文章,更像是記錄。如圖片頻道中,上傳的一張圖片就是一個文章。所以一篇文章由兩部分組成,其一是基本信息,如作者,發(fā)布時間等,記錄在dede_archives中,這個表稱為主表。每個頻道的文章信息,存在附加表中,如圖片頻道的附加表為dede_addonimages。
順便說一下,在模型性質處有獨立模型的選項,就是新建立的模型中,文章在dede_archives沒有記錄??赡芤姷絛ede_archives中多余的字段太多,不是每個模型都需要,才有這種設計。獨立模型更多叫單表模型,縮寫為sg,有專門的sgarclist?,F(xiàn)在剛剛接觸,就先不理它。
在“增加新模型”的表單提交后,會看到數(shù)據(jù)庫中多了一個dede_addonXX的表,不要急著定義這個表的字段,因為dedecms會輔助我們完成這個過程。
現(xiàn)在大約來到“這篇文章”的第三點,依次進入 內容模型管理>dede_addonXX的修改>字段管理>添加新字段 就可以為dede_addonXX添加字段了。添加完一個字段提交后后,會回到字段管理的頁面,看到“模型字段配置”,是一個代表剛才定義過程的標簽,這是手動定義數(shù)據(jù)庫表所沒有的??傊瑢Ω郊颖碛迷摲椒ㄌ砑有伦侄螘?。
關于增刪改的代碼,在前面的檔案發(fā)布/修改/管理出已經定義了。開始時,用archives_add.php,archives_edit.php和content_list.php。由于dedecms有自動表單功能,所以這個文件基本夠用了。自動表單的意思是前面添加新字段時設置的字段,會在add,edit等表單中以控件形式出現(xiàn),不需用戶添加代碼。如果覺得不夠用,可以參照archives_add.php等DIY一下。
這樣自定義的頻道就可以用來生成欄目,像默認欄目一樣好用。
對于增刪改,這可能只是主模型的搭建,對于輔助模型也可以參照其他后臺管理代碼,像分類信息模型中,增加一個地區(qū)表。要搞清后臺管理,有要費一番功夫。
增刪改功能不僅限于后臺,前臺也有這些功能。前臺就不能用表單這種呆板的提交,可能要用到ajax??蓞⒖枷到y(tǒng)頂踩功能和評論功能的實現(xiàn)。
三使用模型中的數(shù)據(jù)
增刪改后還剩下查,這個功能的特點是不用填很多表單。數(shù)據(jù)的查詢一般用標簽完成,field,arclist,list及其衍生標簽已經覆蓋了不少情況。
在文章模板中能用field標簽查詢附加表的字段,而在列表模板中,也能通過arclist查詢到附加表的字段,如下:
<tr>
{dede:arclist addfields='sjdz,yysj' channelid='1}
<td>商家地址:[field:sjdz/]</td>
<td>營業(yè)時間:[field:yysj/]</td>
{/dede:arclist}
</tr>
關鍵是addfields和channelid,addfields里面是你的自定義字段,channelid如果是普通文章就是1
當然也有不少情況是不夠用的,要自定義標簽。可看看下列文章:文章1,文章2
下一篇:dedecms網頁模板怎么制作