dedecms原理
簡單使用
現在老板要求你做一個文章管理系統,欄目(類別)包括(武俠、愛情、音樂...) ,每個欄目(類別)有對應的文章,文章已經給你准備好了,請你在30分鍾搞定該網站,怎么樣?
步驟:
1、登錄到dedecms后台創建了三個欄目(類別)
后台->核心->網站欄目管理->添加頂級欄目
添加三個,刷新首頁即可看看.
2、給每個欄目添加對應的文章給武俠文章欄目添加文章
后台->核心->普通文章->添加文章 (縮略圖代碼可以拿出來用)
這里可以添加文章, 刷新首頁面就看看
當你點擊 某個文章的超鏈接時,就可以看到對應的文章內容
3、創建欄目頁
后台->生成->更新欄目頁
這時,我們的三級頁面,全部走通.
細節問題:
1、dede設計者認為,每個欄目都屬於一個模型 武俠文章|音樂文章=>文章模型,一個內容 模型,對應多個欄目 dede_channeltype 在默認情況下有提供5個內容模型
2、dede設計者認為,所有的數據(電影,文章,軟件,新聞)屬於一個欄目,為了記錄這個欄目信 息,放入dede_arctype表
字段名 |
含義 |
Id |
編號 主鍵 |
Topid |
上一級id是誰 0代表頂級欄目 |
1、dede的設計者認為,所有的記錄(新聞,文章,軟件。。)都應該把數據放入到表 dede_archives[主表],還有一部分數據放入對應 從表
2、dede設計者認為,不管是什么樣的數據,(新聞,文章,軟件..)他們有相同字段,把相同的 字段放入主表(dede_archives),同時認為,每種數據,都有自己獨特的字段,於是把這些 信息,放入從表。比如:
新聞news 從表:dede_addonnews
商品goods 從表:dede_addongoods
3、當我們在后台,創建一個欄目時,
(1) 就會在 dede_arctype 表中記錄這個欄目信息
(2) 同時,會創建一個對應的文件夾,欄目文件夾 dedecms/a/欄目文件夾/
4、我在某個欄目,創建一條記錄時,
(1) 該記錄會保存到 數據庫中(dede_archives+對應從表)
同時成靜態頁面 dedecms/a/欄目文件夾/
實例1:添加內容管理
如果現在我們要做的是電子商務網站,賣我們的商品,這時用文章這樣的形式來管理還合適嗎? 但是內容管理沒有商品,內容模型有商品
在dede后台的規定, 如果一個內容模型,沒有一個欄目,則不會出現內容添加的選項.
隱藏欄目 隱藏內容待審核
提出一個嚴肅的問題. 首頁如何靜態化.
在dedecms 中欄目頁面和首頁面需要手動點擊生成靜態頁面.
欄目頁面的靜態化 : 后台->生成->更新欄目頁 (自動生成對應的靜態頁面)
首頁面的靜態 : 后台->生成->更新首頁面( index.html)
實例2:內容模型添加字段
在添加某個商品的時候,我們希望多兩個信息,就是付費方式,還希望多一個郵資信息,我們又該怎樣處理?
dedecms允許用戶自定義字段,操作如下: 后台->內容模型管理
在添加某個字段信息的時候,dede提供了一個叫聯動類型的字段,常用的聯動信息已經提供.地區. 比如給商品添加一個郵寄到地址
后台->內容模型管理->增加一個聯動類型(注意,字段的名稱,要和dede給出名字一致)
后台->內容模型管理->聯動類別管理
實例3:更新欄目列表
請各位同學看看,這里我們有一個問題,就是當你點擊武俠,愛情,電器的時候,會找不到對應的頁面,這是為什么呢?
當我們點擊首頁的某個欄目,可以進入到對應的欄目列表頁,需要我們手動的點擊更新欄目頁:步驟:后台->生成->更新欄目HTML
注意 :我可以選擇你要更新的哪個欄目
說明:當我們點擊更新欄目HTML,就會在該欄目對應的 目錄
dedecms/a/欄目文件夾/ 生成兩個靜態文件 index.html 還有 xx_list.html
原理示意圖:
增加網站內容步驟
現在我要上一個租賃信息, 需求是內容模型自己創建 myhouse
(1) 創建自己的內容模型 myhouse
后台->內容模型管理->填寫你的信息, 最后點擊創建
結果: 在 dede_channeltype 表中有這個信息; 會創建附件表 dede_addonmyhouse
(1) 根據自己的需求,來創建自定義的字段
后台->內容模型管理->點擊你的某個模型->字段增加, 添加自己的信息
結果: 在 dede_addonmyhouse 表中就會有一個新的字段創建, (alter table 表名 add cloumn 字段名 類型)
(2) 創建一個具體的欄目
出租房屋/求租房屋
到 后台->網站欄目管理 ->增加一個欄目
刷新后台頁面:
(1) 增加信息
點擊內容管理->房屋信息
根據實際情況來填寫內容.
(2) 然后更新首頁面和欄目頁面HTML
后台-> 生成 -> 更新首頁面HTMl ....欄目頁面HTML
每個欄目會對應兩個目標文件 欄目模板,內容模板
注意: 當我們更新后,求租房屋這個 欄目頁生成 ( 因為你還沒有提供 對應的欄目模板,因此默認使用list_default.htm) 對應內容也會使用默認模板(這時可能提示錯誤)
自定義兩個模版然后更新html看靜態頁面 大小都是0kb
(3) 我們需要美工,至少兩個模板
列表模版list_XXX.htm
內容(文本)模板 article_XXX.htm
到此就可以把信息大量的創建.
dedecms的標簽使用
dedecms 標簽的使用
在后台->模板->默認模板管理 ,點擊 修改,就可以看到 dedecms提供的標簽.
去掉廣告.
思路:
因為我的首頁面的靜態頁是通過 模板創建來,到的首頁面對應的模板文件,把模板文件中關於廣告的代碼,去掉即可. dedecms/templets/default/index.htm 模板
廣告標簽是 {dede:myad} 去掉, 如果 index.htm 文件中 include其它模板文件,則需要把引入的模板文件的 myad去掉.
找到模板文件去掉廣告(某個欄目對應列表頁)
找到該欄目的對應的模板文件.可以到 后台->欄目管理->看看某個欄目的
模板是哪個?然后修改.
系統學習dede標簽
學習方法:寫一個自己的模版 寫各種標簽看效果
把主頁模版改成自己的
(1) 單標簽
形式 : {dede:標簽名 參數=’值’ /}
舉例 :includelude filename=’head.htm’/}
{dede:inc
(2) 雙標簽
形式: {dede:標簽名 參數=’值’ ...} 內容 {/dede:標簽名}
舉例:
<!--取出網站的導航欄目-->
<!--type='top' 表示取出頂級欄目 row表示取出多少行-->
<!--dede:channel 標簽 相當 select ? from dede_arctype where ? 去調用一個標簽庫類文件 channel.lib.php
--->
{dede:channel type='top' row='8'}
[field:typename/]
{/dede:channel}
(3) 如何對取出的字段內容,進行簡單的處理
[field:字段名 function=’函數名(@me)’]
我對取出的欄目信息,進行md5加密.
案例 :
{dede:channel type='top' row='8'}
[field:typename/]--[field:id/]--[field:typename function='md5(@me)'/]
{/dede:channel}
(4) 對取出的內容做一個簡單的業務處理
[field:字段名 runphp=’yes’]
//簡單的業務邏輯.
[/filed:字段名]
舉例說明
[field:字段名 runphp=’yes’]
@me = (@me==’’) ? ‘空的’ : @me
[/filed:字段名]
(5) 現在我希望有自己的一個函數,該函數可以,在字段信息后面添加一個 hello, 並返回.
形式是
[field:字段名 function=’函數(@me)’/]
案例:
<br/>
****如何在字段上使用自定義函數***********
[field:typename function='myfun1(@me)'/]
☞ myfun1這個函數要寫到
dedecms/include/extend.func.php
☞ dede標簽不嵌套使用.
(6) 如何在dede中使用全局的變量
在dedecms/include/common.inc.php 文件中定義了很多重要的全局變量的,我們可以使用dede標簽進行引用
基本使用方法:
{dede:global.全局變量名/}
如果需要在{dede}標簽內部使用
[field:global.全局變量名/]
☞ 支持自定義全局變量.
案例:
****如何在字段上使用自定義函數***********
[field:typename function='myfun1(@me)'/]
<br/>
[field:global.cfg_softname/]-[field:global.my_global_val/]
{/dede:channel}
<br/>*********<br/>
{dede:global.cfg_soft_lang/}--{dede:global.cfg_softname/}