2011-05-16 08:52 來(lái)源:落葉原創(chuàng) 編輯:sunsun【糾錯(cuò)】0人評(píng)論
寫(xiě)在前面:本文為落葉原創(chuàng)帝國(guó)CMS、PHPCMS及DEDECMS對(duì)比系列文章之自定義模型功能對(duì)比分析,其它不同切入點(diǎn)的CMS對(duì)比分析文章將陸續(xù)發(fā)布。
早期的文章管理系統(tǒng),數(shù)據(jù)表字段模型都會(huì)內(nèi)置好,按自己的思路,把文章模型、信息模型、圖片模型都內(nèi)置,然后用戶根據(jù)需要,在設(shè)置欄目時(shí)選擇不同的模型,實(shí)現(xiàn)不同的需求。然而這種內(nèi)置模型字段的方式,不能很好的滿足站長(zhǎng)的各種個(gè)性化需求,所以各種CMS都推出了自定義模型和自定義字段的功能。
對(duì)于PHP程序員來(lái)講,自定義模型實(shí)際是在數(shù)據(jù)庫(kù)中建立一個(gè)新的數(shù)據(jù)表,然后添加不同的字段來(lái)記錄不同的數(shù)據(jù),自定義字段功能,即在原有數(shù)據(jù)表中添加新的字段,或者在附加表中添加新的字段,然后根據(jù)數(shù)據(jù)模型進(jìn)行數(shù)據(jù)寫(xiě)入、數(shù)據(jù)查詢讀取、數(shù)據(jù)在模板中的展示操作。而CMS的模型自定義功能,則是把這一系列操作內(nèi)置,流程化,自動(dòng)化,建立模型,選擇不同的字段類型建立字段,根據(jù)不同字段類型,自動(dòng)生成后臺(tái)數(shù)據(jù)錄入界面和前臺(tái)數(shù)據(jù)展示頁(yè)面。站長(zhǎng)不需要編程知識(shí)即可很方便的根據(jù)自己的需求,設(shè)計(jì)不同的數(shù)據(jù)模型,更加方便站長(zhǎng)個(gè)性化建站。同時(shí),懂PHP編程的站長(zhǎng),除了能夠很方便的建立各種模型外,省去了數(shù)據(jù)錄入和數(shù)據(jù)查詢展示的重復(fù)操作環(huán)節(jié),專注于個(gè)性功能的開(kāi)發(fā),能夠更快更好的制作各種各樣的功能模塊。
前面部分說(shuō)到了自定義模型的優(yōu)勢(shì),那本文下部分主要從自定義模型流程對(duì)比、自定義字段字段類型對(duì)比、自定義字段選項(xiàng)對(duì)比(主表副表、前臺(tái)投稿、設(shè)置權(quán)限等)三個(gè)方面。
詳細(xì)對(duì)比分析下帝國(guó)CMS、PHPCMS、DEDECMS,這三款CMS的優(yōu)缺點(diǎn)。
1. 自定義模型流程對(duì)比
在CMS中自定義模型,我們一般最期望實(shí)現(xiàn)的兩點(diǎn)是1)在數(shù)據(jù)庫(kù)中建一個(gè)表,并且可自由設(shè)置表中有什么字段;2)建好字段后,后臺(tái)數(shù)據(jù)添加表單能自動(dòng)生成,前臺(tái)數(shù)據(jù)展示直接能通過(guò)標(biāo)簽調(diào)用,而不需要自己寫(xiě)讀取數(shù)據(jù)的PHP代碼。
那么這三款CMS中是怎樣滿足我們的這兩點(diǎn)期望的呢?
按照帝國(guó)CMS的官方提示,帝國(guó)CMS自定義模型一般步驟為1)系統(tǒng)分析、2)建立數(shù)據(jù)表、3)建立字段、4)建立系統(tǒng)模型。
帝國(guó)自定義模型的創(chuàng)建步驟實(shí)際為先建立一個(gè)數(shù)據(jù)表,然后建立字段,每一個(gè)字段類據(jù)類型等作詳細(xì)設(shè)置后,再整體控制各個(gè)字段的用途及前臺(tái)后臺(tái)數(shù)據(jù)錄入界面的格式即建立系模型。建立系統(tǒng)模型的過(guò)程實(shí)際是對(duì)數(shù)據(jù)字段在模型中所扮演的角色和權(quán)限的分配過(guò)程,如是否作為錄入項(xiàng)、是否作為投稿項(xiàng)、是否可增加、是否可修改、是否作為結(jié)合項(xiàng)等。
按帝國(guó)的思維,建表和建字段只是完成了建數(shù)據(jù)庫(kù)的操作,而系統(tǒng)模型建立的過(guò)程則為規(guī)劃數(shù)據(jù)庫(kù)如何使用的過(guò)程。
PHPCMS中添加自定義模型只有兩步,先建立模型,然后添加字段。在添加模型的過(guò)程中不僅完成了一般意義上的建數(shù)據(jù)表的工作,同時(shí),也完成對(duì)模型的一些初始化設(shè)置,如模型中的數(shù)據(jù)是否生成靜態(tài),欄目頁(yè)、列表頁(yè)、內(nèi)容頁(yè)的模板及URL規(guī)則等。
添加完模型后,會(huì)自動(dòng)生成一部分字段,可對(duì)這些字段作修改或刪除處理,同時(shí)可以自由增加字段。
PHPCMS中自定義模型建立字段時(shí)除了選擇封裝好的字段類型外,也整合了對(duì)字段屬性的設(shè)置,如是否在前臺(tái)投稿中顯示、是否作為標(biāo)簽?zāi)J(rèn)讀取字段、是否作為標(biāo)簽調(diào)用排序字段等。
DEDECMS中自定義模型建立亦分為兩步完成,建數(shù)據(jù)表作初始化設(shè)置然后添加字段。添加模型時(shí)可選擇模型是自動(dòng)模型、系統(tǒng)模型還是獨(dú)立模型。獨(dú)立模型可突破原來(lái)的主表+副表的模式,方便小數(shù)據(jù)量的靈活處理。
從三款CMS的自定義模型流程對(duì)比來(lái)看,帝國(guó)CMS的屬性設(shè)置相對(duì)更為細(xì)致但似乎簡(jiǎn)潔性不夠,很多描述過(guò)于專業(yè)或者不夠明確,站長(zhǎng)朋友們需要看較多幫助文檔才能了解到每項(xiàng)的意思,而PHPCMS和DEDECMS中則相對(duì)簡(jiǎn)潔,一目了然知道每一項(xiàng)的涵義;PHPCMS和DEDECMS在建立模型表的同時(shí)完成了對(duì)模型的初始化設(shè)置,整個(gè)設(shè)置是針對(duì)整個(gè)模型的,與具體字段無(wú)關(guān),屬全局性設(shè)置,而帝國(guó)CMS中模型的設(shè)置則是整合了對(duì)字段的整體操作,在建好字段之后,細(xì)化到對(duì)字段的細(xì)節(jié)控制,屬“微觀調(diào)控”。
帝國(guó)CMS中能夠單獨(dú)設(shè)置字段的前臺(tái)后臺(tái)展示模板,相對(duì)更為靈活些; PHPCMS中則由于字段類型是以組件形式封裝的,前臺(tái)后臺(tái)數(shù)據(jù)錄入界面自動(dòng)生成,簡(jiǎn)便,但在某些時(shí)候需要自定義部分字段的表單HTML時(shí)只有在模板中使用邏輯判斷才能實(shí)現(xiàn),靈活性稍缺乏。DEDECMS模型設(shè)置和PHPCMS類似,DEDECMS這塊的優(yōu)勢(shì)在于可以選擇數(shù)據(jù)模型是主表+副表的模式還是獨(dú)立表模式,并且可以自由設(shè)定前臺(tái)后臺(tái)的數(shù)據(jù)處理PHP文件,方便二次開(kāi)發(fā)。
按我的經(jīng)驗(yàn)來(lái)看,帝國(guó)CMS這塊的設(shè)置雖然很細(xì)致,但實(shí)際把問(wèn)題復(fù)雜化了,據(jù)觀察,帝國(guó)CMS的用戶自定義模型的深度用戶并不多。實(shí)際按照PHPCMS和DEDECMS的思路,建模型數(shù)據(jù)表的同時(shí),對(duì)模型作一部分全局設(shè)置,然后單個(gè)字段中根據(jù)不同字段類型及不同需求作細(xì)節(jié)設(shè)置,這樣的流程更直觀更方便。
另外,PHPCMS中自定義模型后可直接預(yù)覽模型的數(shù)據(jù)錄入界面,方便查看字段設(shè)置的效果,這點(diǎn)非常方便。
所以,從自定義模型細(xì)節(jié)易用性對(duì)比來(lái)看:DEDECMS>PHPCMS>帝國(guó)CMS。
2.字段類型對(duì)比:
CMS中自定義字段有一個(gè)很好的優(yōu)點(diǎn)就是都封裝好了一些常見(jiàn)的字段類型,建立字段的同時(shí),直接設(shè)置好了字段對(duì)應(yīng)的表現(xiàn)形式,選擇不同的字段類型,在會(huì)員中心投稿表單界面、后臺(tái)數(shù)據(jù)錄入界面及前臺(tái)數(shù)據(jù)展示界面中都會(huì)有所不同,并且是自動(dòng)呈現(xiàn)。舉個(gè)例子,如果是PHP程序員需要實(shí)現(xiàn)對(duì)文章內(nèi)容的存儲(chǔ),除了需要在數(shù)據(jù)庫(kù)中添加一個(gè)字段外,還需要在數(shù)據(jù)錄入表單中添加一個(gè)textarea,同時(shí)還要引用一些編輯器如fckeditor等。過(guò)程比較費(fèi)事,并且存在許多重復(fù)性勞動(dòng)。而如果在PHPCMS或者帝國(guó)CMS中實(shí)現(xiàn)這一需求,則只需要在建立字段時(shí)選擇“編輯器”字段類型,在DEDECMS中也類似只需要選擇“HTML文本”類型的字段即可。因?yàn)镃MS的字段類型都將各種不同的字段進(jìn)行了封裝,添加字段時(shí)直接選擇,然后自動(dòng)生成的數(shù)據(jù)錄入界面中和前臺(tái)數(shù)據(jù)展示界面中,程序都會(huì)根據(jù)字段類型作一些處理,然后自動(dòng)輸出。(PHPCMS中生成表單界面時(shí)會(huì)調(diào)用input_form相關(guān)的類根據(jù)字段類型進(jìn)行處理,在輸出數(shù)據(jù)前,會(huì)調(diào)用output_form相關(guān)的類根據(jù)不同字段類型對(duì)數(shù)據(jù)進(jìn)行處理)。
帝國(guó)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) | 單行文本 多行文本 選項(xiàng) 數(shù)字 編輯器 日期和時(shí)間 顏色和字型 圖片 多圖片 文件 鏡像下載 多文件上傳 欄目 類別 地區(qū) 標(biāo)題 作者 來(lái)源 關(guān)鍵詞 會(huì)員組 會(huì)員ID 推薦位 模板 轉(zhuǎn)向鏈接 分頁(yè)選擇 視頻 聯(lián)動(dòng)菜單 | 單行文本(varchar) 單行文本(char) 多行文本 HTML文本 文本保存HTML數(shù)據(jù) 整數(shù)類型 小數(shù)類型 時(shí)間類型 圖片 圖片(僅網(wǎng)址) 多媒體文件 附件類型 使用option下拉框 使用radio選項(xiàng)卡 Checkbox多選框 聯(lián)動(dòng)類型 |
從上表可見(jiàn)PHPCMS中字段類型的的豐富程度和實(shí)用性是明顯優(yōu)于帝國(guó)CMS和DEDECMS的。DEDECMS字段類型稍多于帝國(guó)CMS。
即:PHPCMS >DEDECMS>帝國(guó)CMS。
3.自定義字段屬性選項(xiàng)對(duì)比:
有些時(shí)候設(shè)置的一些字段,我們希望只有管理員才能設(shè)置該字段的值;有些時(shí)候,添加的一些字段,我們希望能夠方便和標(biāo)題摘要一起在文章列表中調(diào)用;有些時(shí)候,添加的一些字段,我們希望這個(gè)字段添加后不能再被修改;有時(shí)些時(shí)候,添加的一些字段,我們希望實(shí)現(xiàn)只在后臺(tái)數(shù)據(jù)錄入界面中顯示,而在前臺(tái)投稿中不顯示……這時(shí)候,靈活的字段屬性選項(xiàng),顯得尤為重要。
那么這三款CMS中的字段屬性有哪些差異?哪個(gè)最能滿足用戶的需求呢?
1)自定義字段是否可選擇是否存在主表還是副表?
PHPCMS2008和DEDECMS的自定義字段只能添加到副表中,帝國(guó)CMS自定義字段則可選擇是添加在主表中還是副表中,這樣的好處在于,自定義字段可以方便作為數(shù)據(jù)調(diào)用條件和查詢條件和在文章列表中調(diào)用,而如果單純只加在副表中,一旦涉及到數(shù)據(jù)聯(lián)合查詢,效率會(huì)低很多,并且即使是簡(jiǎn)單的標(biāo)題+摘要+自定義字段顯示的文章列表中都非得多表聯(lián)合查詢,人為增加SQL查詢復(fù)雜度,降低效率。很典型的問(wèn)題是在涉及到聯(lián)動(dòng)篩選的情況時(shí),自定義字段如果不能選擇存儲(chǔ)在主表中,會(huì)人為制造非常大的麻煩。
如上圖所示的,聯(lián)動(dòng)篩選字段(帝國(guó)CMS和DEDECMS中稱作結(jié)合項(xiàng)),如果是想要用PHPCMS2008和帝國(guó)CMS來(lái)自定義,售價(jià)、面積、戶型等自下義字段,只能添加在副表中,結(jié)果是非常痛苦的,每個(gè)條件的查詢都要主表和副表同時(shí)查詢,并且查詢條件分期在主表中和副表中時(shí),要同時(shí)滿足條件,非得join查詢。 如果涉及排序等,更是頭痛,反正是人為自找麻煩。如果能選擇直接把字段字義表主表中,這樣,這類數(shù)據(jù)量存儲(chǔ)不大的字段,不會(huì)明顯增加主表的負(fù)擔(dān),但查詢和讀取都直接是單表操作,非常方便。帝國(guó)CMS中這點(diǎn)做的比較不錯(cuò),并且有提供了單獨(dú)的結(jié)合項(xiàng)功能。DEDECMS中貌似也有結(jié)合項(xiàng)功能,適用于多條件篩選的情況。
所以,這一點(diǎn),帝國(guó)CMS>DEDECMS>PHPCMS。
2)字段的權(quán)限設(shè)置
有些字段,只希望在管理員或者編輯人員在編輯信息時(shí)才能設(shè)置,普通用戶不給設(shè)置權(quán)限,這就需要給自定義字段一個(gè)完整的權(quán)限系統(tǒng)。這一點(diǎn)PHPCMS中做的非常不錯(cuò),可以直接能過(guò)勾選“不允許設(shè)置該字段值的會(huì)員組”的選項(xiàng)來(lái)實(shí)現(xiàn)。帝國(guó)CMS中最后一步“系統(tǒng)模型建立”中“可增加”、“可修改”這幾項(xiàng)似乎有權(quán)限設(shè)置的影子,只是實(shí)現(xiàn)了部分權(quán)限功能,而DEDECMS中則沒(méi)有看到明確的字段權(quán)限設(shè)置選項(xiàng)。
所以,這一點(diǎn)PHPCMS>帝國(guó)CMS>DEDECMS。
3)不在前臺(tái)投稿中顯示
有些時(shí)候設(shè)置某些字段,雖然普通會(huì)員也可以有給他賦值的權(quán)限,但是不需要或者不想在前臺(tái)投稿中顯示(如摘要等,有時(shí)候想簡(jiǎn)單點(diǎn),只讓用戶發(fā)個(gè)標(biāo)題和內(nèi)容),所以很需要實(shí)現(xiàn)某個(gè)自定義字段只在后臺(tái)編輯時(shí)可以填寫(xiě),而在前臺(tái)投稿界面中不自動(dòng)顯示。關(guān)于這點(diǎn),在PHPCMS中只需設(shè)置“是否在前臺(tái)投稿中顯示”項(xiàng)為否即可,DEDECMS中字段選項(xiàng)中“前臺(tái)參數(shù)”項(xiàng)中的“前臺(tái)投稿及采集規(guī)則禁用本字段”亦實(shí)現(xiàn)了這一需求,至于帝國(guó)CMS中,可以通過(guò)系統(tǒng)模型設(shè)置是否為錄入項(xiàng)實(shí)現(xiàn),但似乎不夠直觀。
有時(shí)候,在使用PHPCMS自定義字段時(shí),不希望字段在前臺(tái)投稿中顯示的另一個(gè)原因是,想對(duì)添加的一部分字段的表單樣式作單獨(dú)的修改或者作一些JS處理,PHPCMS內(nèi)置的字段樣式不太夠用或者不太方便,所以在設(shè)置字段時(shí)選擇不在前臺(tái)投稿中顯示,然后在模板中按需求手動(dòng)添加這個(gè)字段的表單項(xiàng),這一點(diǎn)在DEDECMS中有自定義表單HTML項(xiàng),不需要像PHPCMS中這樣變相實(shí)現(xiàn)字段HTML項(xiàng)的定義,帝國(guó)CMS中添加自段時(shí)有提供定義前臺(tái)后臺(tái)錄入數(shù)據(jù)表單HTML的設(shè)置項(xiàng),但他同時(shí)寫(xiě)出了提示“增加字段時(shí)請(qǐng)留空”,這個(gè)做法不太理解,不過(guò),他在進(jìn)行系統(tǒng)模型定義的最后一步可以統(tǒng)一設(shè)置每個(gè)字段的前后臺(tái)數(shù)據(jù)錄入界面表單HTML。不過(guò),DEDECMS和帝國(guó)CMS中的字兩項(xiàng)設(shè)置對(duì)普通新手用戶可能反而帶來(lái)疑惑,對(duì)熟悉二次開(kāi)發(fā)的倒是挺方便的。
從這個(gè)小點(diǎn)來(lái)看,普通用戶PHPCMS>DEDECMS>帝國(guó)CMS,二次開(kāi)發(fā)DEDECMS>帝國(guó)CMS>PHPCMS。
關(guān)于帝國(guó)CMS、PHPCMS、DEDECMS這三款CMS自定義模型功能,實(shí)際還有很多值得對(duì)比分析的地方,都各有優(yōu)缺點(diǎn),實(shí)現(xiàn)應(yīng)用中總會(huì)有感覺(jué)很爽的地方,同時(shí)也會(huì)有很糾結(jié)的地方,在這些方面我是深有感觸的。
當(dāng)然,本文并不在絕對(duì)的得出哪款CMS更好,哪款CMS不好的結(jié)論,只是根據(jù)自己實(shí)際使用的感觸作一些簡(jiǎn)單的對(duì)比分析,上面對(duì)比的誰(shuí)優(yōu)于誰(shuí)也只是基于我個(gè)人的感受,具體不同層次的用戶依個(gè)人習(xí)慣可能感受不同,希望能給朋友們一些參考。
作者:落葉(t.qq.com/guohui/) 網(wǎng)站:http://www.pmume.com 。
尊重版權(quán),轉(zhuǎn)載請(qǐng)注明出處,并保留鏈接,落葉原創(chuàng)首發(fā)CHINAZ。
聯(lián)系客服