帝國、PHPCMS及織夢對比(一):自定義模型功能分析

2011-10-08 17:42:46來源:chinaz作者:落葉

寫在前面:本文為落葉原創(chuàng)帝國CMS、PHPCMS及DEDECMS對比系列文章之自定義模型功能對比分析,其它不同切入點的CMS對比分析文章將陸續(xù)發(fā)布。

寫在前面:本文為落葉原創(chuàng)帝國CMS、PHPCMS及DEDECMS對比系列文章之自定義模型功能對比分析,其它不同切入點的CMS對比分析文章將陸續(xù)發(fā)布。

早期的文章管理系統(tǒng),數(shù)據(jù)表字段模型都會內(nèi)置好,按自己的思路,把文章模型、信息模型、圖片模型都內(nèi)置,然后用戶根據(jù)需要,在設(shè)置欄目時選擇不同的模型,實現(xiàn)不同的需求。然而這種內(nèi)置模型字段的方式,不能很好的滿足站長的各種個性化需求,所以各種CMS都推出了自定義模型和自定義字段的功能。

對于PHP程序員來講,自定義模型實際是在數(shù)據(jù)庫中建立一個新的數(shù)據(jù)表,然后添加不同的字段來記錄不同的數(shù)據(jù),自定義字段功能,即在原有數(shù)據(jù)表中添加新的字段,或者在附加表中添加新的字段,然后根據(jù)數(shù)據(jù)模型進(jìn)行數(shù)據(jù)寫入、數(shù)據(jù)查詢讀取、數(shù)據(jù)在模板中的展示操作。而CMS的模型自定義功能,則是把這一系列操作內(nèi)置,流程化,自動化,建立模型,選擇不同的字段類型建立字段,根據(jù)不同字段類型,自動生成后臺數(shù)據(jù)錄入界面和前臺數(shù)據(jù)展示頁面。站長不需要編程知識即可很方便的根據(jù)自己的需求,設(shè)計不同的數(shù)據(jù)模型,更加方便站長個性化建站。同時,懂PHP編程的站長,除了能夠很方便的建立各種模型外,省去了數(shù)據(jù)錄入和數(shù)據(jù)查詢展示的重復(fù)操作環(huán)節(jié),專注于個性功能的開發(fā),能夠更快更好的制作各種各樣的功能模塊。

前面部分說到了自定義模型的優(yōu)勢,那本文下部分主要從自定義模型流程對比、自定義字段字段類型對比、自定義字段選項對比(主表副表、前臺投稿、設(shè)置權(quán)限等)三個方面。

詳細(xì)對比分析下帝國CMS、PHPCMS、DEDECMS,這三款CMS的優(yōu)缺點。

1. 自定義模型流程對比

在CMS中自定義模型,我們一般最期望實現(xiàn)的兩點是1)在數(shù)據(jù)庫中建一個表,并且可自由設(shè)置表中有什么字段;2)建好字段后,后臺數(shù)據(jù)添加表單能自動生成,前臺數(shù)據(jù)展示直接能通過標(biāo)簽調(diào)用,而不需要自己寫讀取數(shù)據(jù)的PHP代碼。

那么這三款CMS中是怎樣滿足我們的這兩點期望的呢?

按照帝國CMS的官方提示,帝國CMS自定義模型一般步驟為1)系統(tǒng)分析、2)建立數(shù)據(jù)表、3)建立字段、4)建立系統(tǒng)模型。

帝國自定義模型的創(chuàng)建步驟實際為先建立一個數(shù)據(jù)表,然后建立字段,每一個字段類據(jù)類型等作詳細(xì)設(shè)置后,再整體控制各個字段的用途及前臺后臺數(shù)據(jù)錄入界面的格式即建立系模型。建立系統(tǒng)模型的過程實際是對數(shù)據(jù)字段在模型中所扮演的角色和權(quán)限的分配過程,如是否作為錄入項、是否作為投稿項、是否可增加、是否可修改、是否作為結(jié)合項等。

\

按帝國的思維,建表和建字段只是完成了建數(shù)據(jù)庫的操作,而系統(tǒng)模型建立的過程則為規(guī)劃數(shù)據(jù)庫如何使用的過程。

PHPCMS中添加自定義模型只有兩步,先建立模型,然后添加字段。在添加模型的過程中不僅完成了一般意義上的建數(shù)據(jù)表的工作,同時,也完成對模型的一些初始化設(shè)置,如模型中的數(shù)據(jù)是否生成靜態(tài),欄目頁、列表頁、內(nèi)容頁的模板及URL規(guī)則等。

添加完模型后,會自動生成一部分字段,可對這些字段作修改或刪除處理,同時可以自由增加字段。

PHPCMS中自定義模型建立字段時除了選擇封裝好的字段類型外,也整合了對字段屬性的設(shè)置,如是否在前臺投稿中顯示、是否作為標(biāo)簽?zāi)J(rèn)讀取字段、是否作為標(biāo)簽調(diào)用排序字段等。

\

DEDECMS中自定義模型建立亦分為兩步完成,建數(shù)據(jù)表作初始化設(shè)置然后添加字段。添加模型時可選擇模型是自動模型、系統(tǒng)模型還是獨立模型。獨立模型可突破原來的主表+副表的模式,方便小數(shù)據(jù)量的靈活處理。

\

從三款CMS的自定義模型流程對比來看,帝國CMS的屬性設(shè)置相對更為細(xì)致但似乎簡潔性不夠,很多描述過于專業(yè)或者不夠明確,站長朋友們需要看較多幫助文檔才能了解到每項的意思,而PHPCMS和DEDECMS中則相對簡潔,一目了然知道每一項的涵義;PHPCMS和DEDECMS在建立模型表的同時完成了對模型的初始化設(shè)置,整個設(shè)置是針對整個模型的,與具體字段無關(guān),屬全局性設(shè)置,而帝國CMS中模型的設(shè)置則是整合了對字段的整體操作,在建好字段之后,細(xì)化到對字段的細(xì)節(jié)控制,屬“微觀調(diào)控”。

帝國CMS中能夠單獨設(shè)置字段的前臺后臺展示模板,相對更為靈活些; PHPCMS中則由于字段類型是以組件形式封裝的,前臺后臺數(shù)據(jù)錄入界面自動生成,簡便,但在某些時候需要自定義部分字段的表單HTML時只有在模板中使用邏輯判斷才能實現(xiàn),靈活性稍缺乏。DEDECMS模型設(shè)置和PHPCMS類似,DEDECMS這塊的優(yōu)勢在于可以選擇數(shù)據(jù)模型是主表+副表的模式還是獨立表模式,并且可以自由設(shè)定前臺后臺的數(shù)據(jù)處理PHP文件,方便二次開發(fā)。

按我的經(jīng)驗來看,帝國CMS這塊的設(shè)置雖然很細(xì)致,但實際把問題復(fù)雜化了,據(jù)觀察,帝國CMS的用戶自定義模型的深度用戶并不多。實際按照 PHPCMS和DEDECMS的思路,建模型數(shù)據(jù)表的同時,對模型作一部分全局設(shè)置,然后單個字段中根據(jù)不同字段類型及不同需求作細(xì)節(jié)設(shè)置,這樣的流程更直觀更方便。

另外,PHPCMS中自定義模型后可直接預(yù)覽模型的數(shù)據(jù)錄入界面,方便查看字段設(shè)置的效果,這點非常方便。

所以,從自定義模型細(xì)節(jié)易用性對比來看:DEDECMS>PHPCMS>帝國CMS。

2.字段類型對比:

CMS中自定義字段有一個很好的優(yōu)點就是都封裝好了一些常見的字段類型,建立字段的同時,直接設(shè)置好了字段對應(yīng)的表現(xiàn)形式,選擇不同的字段類型,在會員中心投稿表單界面、后臺數(shù)據(jù)錄入界面及前臺數(shù)據(jù)展示界面中都會有所不同,并且是自動呈現(xiàn)。舉個例子,如果是PHP程序員需要實現(xiàn)對文章內(nèi)容的存儲,除了需要在數(shù)據(jù)庫中添加一個字段外,還需要在數(shù)據(jù)錄入表單中添加一個textarea,同時還要引用一些編輯器如fckeditor等。過程比較費事,并且存在許多重復(fù)性勞動。而如果在PHPCMS或者帝國CMS中實現(xiàn)這一需求,則只需要在建立字段時選擇“編輯器”字段類型,在DEDECMS中也類似只需要選擇“HTML文本”類型的字段即可。因為CMS的字段類型都將各種不同的字段進(jìn)行了封裝,添加字段時直接選擇,然后自動生成的數(shù)據(jù)錄入界面中和前臺數(shù)據(jù)展示界面中,程序都會根據(jù)字段類型作一些處理,然后自動輸出。(PHPCMS中生成表單界面時會調(diào)用input_form相關(guān)的類根據(jù)字段類型進(jìn)行處理,在輸出數(shù)據(jù)前,會調(diào)用output_form相關(guān)的類根據(jù)不同字段類型對數(shù)據(jù)進(jìn)行處理)。

帝國CMS的字段類型
PHCMS的字段類型
DEDECMS的字段類型
單行文本框(text)
密碼框(password)
下拉框(select)
單選框(radio)
復(fù)選框(checkbox)
多行文本框(textarea)
編輯器(editor)
圖片(img)
FLASH文件(flash)
文件(file)
日期(date)
顏色(color)
選擇外表關(guān)聯(lián)字段(linkfield)
下拉外表關(guān)聯(lián)字段(linkfieldselect)
單行文本
多行文本
選項
數(shù)字
編輯器
日期和時間
顏色和字型
圖片
多圖片
文件
鏡像下載
多文件上傳
欄目
類別
地區(qū)
標(biāo)題
作者
來源
關(guān)鍵詞
會員組
會員ID
推薦位
模板
轉(zhuǎn)向鏈接
分頁選擇
視頻
聯(lián)動菜單
單行文本(varchar)
單行文本(char)
多行文本
HTML文本
文本保存HTML數(shù)據(jù)
整數(shù)類型
小數(shù)類型
時間類型
圖片
圖片(僅網(wǎng)址)
多媒體文件
附件類型
使用option下拉框
使用radio選項卡
Checkbox多選框
聯(lián)動類型

從上表可見PHPCMS中字段類型的的豐富程度和實用性是明顯優(yōu)于帝國CMS和DEDECMS的。DEDECMS字段類型稍多于帝國CMS。

即:PHPCMS >DEDECMS>帝國CMS。

3.自定義字段屬性選項對比:

有些時候設(shè)置的一些字段,我們希望只有管理員才能設(shè)置該字段的值;有些時候,添加的一些字段,我們希望能夠方便和標(biāo)題摘要一起在文章列表中調(diào)用;有些時候,添加的一些字段,我們希望這個字段添加后不能再被修改;有時些時候,添加的一些字段,我們希望實現(xiàn)只在后臺數(shù)據(jù)錄入界面中顯示,而在前臺投稿中不顯示……這時候,靈活的字段屬性選項,顯得尤為重要。

那么這三款CMS中的字段屬性有哪些差異?哪個最能滿足用戶的需求呢?

1)自定義字段是否可選擇是否存在主表還是副表?

PHPCMS2008和DEDECMS的自定義字段只能添加到副表中,帝國CMS自定義字段則可選擇是添加在主表中還是副表中,這樣的好處在于,自定義字段可以方便作為數(shù)據(jù)調(diào)用條件和查詢條件和在文章列表中調(diào)用,而如果單純只加在副表中,一旦涉及到數(shù)據(jù)聯(lián)合查詢,效率會低很多,并且即使是簡單的標(biāo)題+摘要+自定義字段顯示的文章列表中都非得多表聯(lián)合查詢,人為增加SQL查詢復(fù)雜度,降低效率。很典型的問題是在涉及到聯(lián)動篩選的情況時,自定義字段如果不能選擇存儲在主表中,會人為制造非常大的麻煩。

\

如上圖所示的,聯(lián)動篩選字段(帝國CMS和DEDECMS中稱作結(jié)合項),如果是想要用PHPCMS2008和帝國CMS來自定義,售價、面積、戶型等自下義字段,只能添加在副表中,結(jié)果是非常痛苦的,每個條件的查詢都要主表和副表同時查詢,并且查詢條件分期在主表中和副表中時,要同時滿足條件,非得join查詢。 如果涉及排序等,更是頭痛,反正是人為自找麻煩。如果能選擇直接把字段字義表主表中,這樣,這類數(shù)據(jù)量存儲不大的字段,不會明顯增加主表的負(fù)擔(dān),但查詢和讀取都直接是單表操作,非常方便。帝國CMS中這點做的比較不錯,并且有提供了單獨的結(jié)合項功能。DEDECMS中貌似也有結(jié)合項功能,適用于多條件篩選的情況。

所以,這一點,帝國CMS>DEDECMS>PHPCMS。

2)字段的權(quán)限設(shè)置

有些字段,只希望在管理員或者編輯人員在編輯信息時才能設(shè)置,普通用戶不給設(shè)置權(quán)限,這就需要給自定義字段一個完整的權(quán)限系統(tǒng)。這一點PHPCMS 中做的非常不錯,可以直接能過勾選“不允許設(shè)置該字段值的會員組”的選項來實現(xiàn)。帝國CMS中最后一步“系統(tǒng)模型建立”中“可增加”、“可修改”這幾項似乎有權(quán)限設(shè)置的影子,只是實現(xiàn)了部分權(quán)限功能,而DEDECMS中則沒有看到明確的字段權(quán)限設(shè)置選項。

所以,這一點PHPCMS>帝國CMS>DEDECMS。

3)不在前臺投稿中顯示

有些時候設(shè)置某些字段,雖然普通會員也可以有給他賦值的權(quán)限,但是不需要或者不想在前臺投稿中顯示(如摘要等,有時候想簡單點,只讓用戶發(fā)個標(biāo)題和內(nèi)容),所以很需要實現(xiàn)某個自定義字段只在后臺編輯時可以填寫,而在前臺投稿界面中不自動顯示。關(guān)于這點,在PHPCMS中只需設(shè)置“是否在前臺投稿中顯示”項為否即可,DEDECMS中字段選項中“前臺參數(shù)”項中的“前臺投稿及采集規(guī)則禁用本字段”亦實現(xiàn)了這一需求,至于帝國CMS中,可以通過系統(tǒng)模型設(shè)置是否為錄入項實現(xiàn),但似乎不夠直觀。

有時候,在使用PHPCMS自定義字段時,不希望字段在前臺投稿中顯示的另一個原因是,想對添加的一部分字段的表單樣式作單獨的修改或者作一些JS 處理,PHPCMS內(nèi)置的字段樣式不太夠用或者不太方便,所以在設(shè)置字段時選擇不在前臺投稿中顯示,然后在模板中按需求手動添加這個字段的表單項,這一點在DEDECMS中有自定義表單HTML項,不需要像PHPCMS中這樣變相實現(xiàn)字段HTML項的定義,帝國CMS中添加自段時有提供定義前臺后臺錄入數(shù)據(jù)表單HTML的設(shè)置項,但他同時寫出了提示“增加字段時請留空”,這個做法不太理解,不過,他在進(jìn)行系統(tǒng)模型定義的最后一步可以統(tǒng)一設(shè)置每個字段的前后臺數(shù)據(jù)錄入界面表單HTML。不過,DEDECMS和帝國CMS中的字兩項設(shè)置對普通新手用戶可能反而帶來疑惑,對熟悉二次開發(fā)的倒是挺方便的。

從這個小點來看,普通用戶PHPCMS>DEDECMS>帝國CMS,二次開發(fā)DEDECMS>帝國CMS>PHPCMS。

關(guān)于帝國CMS、PHPCMS、DEDECMS這三款CMS自定義模型功能,實際還有很多值得對比分析的地方,都各有優(yōu)缺點,實現(xiàn)應(yīng)用中總會有感覺很爽的地方,同時也會有很糾結(jié)的地方,在這些方面我是深有感觸的。

當(dāng)然,本文并不在絕對的得出哪款CMS更好,哪款CMS不好的結(jié)論,只是根據(jù)自己實際使用的感觸作一些簡單的對比分析,上面對比的誰優(yōu)于誰也只是基于我個人的感受,具體不同層次的用戶依個人習(xí)慣可能感受不同,希望能給朋友們一些參考。

系列相關(guān)文章:

作者:落葉(t.qq.com/guohui/) 網(wǎng)站:http://www.pmume.com

關(guān)鍵詞:帝國PHPCMSdedecms

贊助商鏈接: