PHPCMS和帝國(guó)CMS二次開(kāi)發(fā)優(yōu)缺點(diǎn)分析及站長(zhǎng)如何適合自己的CMS 推薦

作者:落葉(lyrs.net) (t.qq.com/guohui )
經(jīng)常見(jiàn)站長(zhǎng)論壇有人提到選哪個(gè)CMS好,最近也又有朋友在51LA站長(zhǎng)群里問(wèn)到PHPCMS和帝國(guó)CMS比較選哪個(gè)好的問(wèn)題,所以落葉今天從PHPCMS及帝國(guó)CMS對(duì)比的角度來(lái)談?wù)務(wù)鹃L(zhǎng)應(yīng)該如何選擇適合自己的CMS。
落葉自詡對(duì)現(xiàn)在主流CMS及建站程序還是有足夠多了解的,從接觸混互聯(lián)網(wǎng)開(kāi)始使用過(guò)的并且作過(guò)小量二次開(kāi)發(fā)的CMS和建站程序有早期的動(dòng)易siteweaver、DEDECMS、PHPCMS2008、帝國(guó)CMS、科訊CMS、無(wú)憂CMS、風(fēng)訊CMS 、DISCUZ、UCHOME、HDWIKI、新云CMS等(以前負(fù)責(zé)的一個(gè)網(wǎng)站是Siteweaver+2*PHPCMS+HDWIKI+DISCUZ7.0+UCHOME搭建的行業(yè)門戶,二次開(kāi)發(fā)比較多,所以相對(duì)比較了解,至于其它CMS因?yàn)槌S泻芏嗯笥严蛭覇?wèn)到各種各樣的CMS使用問(wèn)題,所以我也常做一些測(cè)試和一些小量二次開(kāi)發(fā))。
從落葉的經(jīng)驗(yàn)來(lái)看,站長(zhǎng)在選擇一款CMS時(shí),大概一般會(huì)考慮如下方面:
1) 程序是否安全穩(wěn)定,會(huì)不會(huì)經(jīng)常有BUG
2) 程序使用簡(jiǎn)不簡(jiǎn)單
3) 程序生成靜態(tài)速度是否夠快
4) 程序模板多不多,模板好不好做,標(biāo)簽好不好用
5) 程序負(fù)載能力強(qiáng)不強(qiáng)
6) 程序模塊多不多,如有沒(méi)有房產(chǎn)模塊、有沒(méi)有黃頁(yè)模塊、分類信息模塊、問(wèn)答模塊等
7) 程序二次開(kāi)發(fā)是否靈活
擅長(zhǎng)或喜歡二次開(kāi)發(fā)的基本首先會(huì)考慮二次開(kāi)發(fā)的靈活性,及模塊方面有沒(méi)有適合自己的;而普通用戶則更多的考慮程序易不易于使用,模板標(biāo)簽簡(jiǎn)不簡(jiǎn)單,所以CMS選擇的焦點(diǎn)基本集中的二次開(kāi)發(fā)的靈活性和模板標(biāo)簽的易用性兩方面了。
落葉接觸到的這些CMS或建站程序,也基本上是大家現(xiàn)在用的比較多的,其中PHPCMS是落葉最為熟悉的,二次開(kāi)發(fā)最多的,而帝國(guó)CMS也只是最近因?yàn)橛信笥岩規(guī)兔κ挂恍┑蹏?guó)CMS的插件和進(jìn)行一些細(xì)節(jié)修改,所以才用到,對(duì)比發(fā)現(xiàn)PHPCMS和帝國(guó)CMS在很多設(shè)計(jì)思路上比較相近,但又似乎完全是兩種不同的風(fēng)格,落葉覺(jué)得比較典型,所以以這兩款CMS來(lái)作對(duì)比分析。
1.從二次開(kāi)發(fā)的角度來(lái)講:
在我看來(lái),PHPCMS(2008版)更多算作是一個(gè)開(kāi)發(fā)框架,離一個(gè)成熟的產(chǎn)品太遠(yuǎn),先后使用PHPCMS二次開(kāi)發(fā)搭建過(guò)五六個(gè)平臺(tái),從剛發(fā)布的PHPCMS2008版,及現(xiàn)在的PHPCMS2008 sp4版(pcv9不作評(píng)價(jià),開(kāi)發(fā)初期做過(guò)較多的測(cè)試、反饋過(guò)一些建議,但正式版我并沒(méi)用過(guò)),每一次我都會(huì)遇到同樣的問(wèn)題,總是邊罵低級(jí)錯(cuò)誤邊作修改,到現(xiàn)在官方停止開(kāi)發(fā)了,很多剛發(fā)布時(shí)的BUG都還存在。雖然如此,PHPCMS仍然是首選的CMS,為啥,就是他很靈活,想怎么改就可以怎么改,想到即可以做到。在我看來(lái)PHPCMS代表了一種極端,即如果首要考慮二次開(kāi)發(fā),那PHPCMS是不錯(cuò)的選擇。
PHPCMS中想實(shí)現(xiàn)任何數(shù)據(jù)的讀取只要寫一條SQL,然后面模板中GET標(biāo)簽調(diào)用下就行了,如果覺(jué)得模板中處理的不夠,那么只需要在對(duì)應(yīng)同名的PHP文件中作些處理就行了。甚至,只需要在頭部引用common.php文件,調(diào)用模板引用函數(shù)引用模板,然后建一個(gè)同名的HTML文件作為模板,即可在PHPCMS的基礎(chǔ)上實(shí)現(xiàn)很多想要的功能。
帝國(guó)CMS,雖然官方的宣傳語(yǔ)也是想到即可做到,但從我在對(duì)帝國(guó)CMS作一些簡(jiǎn)單功能需求的修改及插件開(kāi)發(fā)來(lái)看,帝國(guó)CMS離想到即可做到太遠(yuǎn),限制在帝國(guó)的開(kāi)發(fā)思路之下,有些功能即使是很小的功能,也需要對(duì)帝國(guó)的核心程序大動(dòng)干戈。就拿一個(gè)簡(jiǎn)單的需求“我想獲取內(nèi)容頁(yè)分頁(yè)的頁(yè)碼,以根據(jù)不同的分頁(yè)來(lái)實(shí)現(xiàn)一些不同的顯示”,這個(gè)需求的后面不談,單就獲取內(nèi)容頁(yè)分頁(yè)的頁(yè)碼來(lái)講,幾乎是不可能,為啥呢?第一,他沒(méi)有這個(gè)標(biāo)簽,也沒(méi)有提供變量,論壇里很多人提到這一需求,始終無(wú)法解決;第二,帝國(guó)的模板標(biāo)簽解析方式是老的動(dòng)易的思維即程序先處理好每一個(gè)標(biāo)簽的結(jié)果,連HTML都帶上了,然后把存儲(chǔ)在數(shù)據(jù)庫(kù)中的模板讀出來(lái),把里面的標(biāo)簽一個(gè)一個(gè)替換,基本上內(nèi)容頁(yè)的每一個(gè)標(biāo)簽都是經(jīng)過(guò)了一個(gè)專門的處理過(guò)程來(lái)實(shí)現(xiàn),耦合度太高,大部分代碼都沒(méi)法通用。(現(xiàn)在主流模板引擎都是先把標(biāo)簽解析編譯好,然后緩存,標(biāo)簽已經(jīng)變成可執(zhí)行的PHP程序,然后程序處理好數(shù)據(jù)后直接調(diào)用模板緩存,執(zhí)行。標(biāo)簽都是通過(guò)統(tǒng)一的方式來(lái)處理的,通用性較強(qiáng)。)而也正因?yàn)槊總€(gè)標(biāo)簽都封裝的很好,做的很完整了,所以使用起來(lái)又非常簡(jiǎn)單穩(wěn)定,只要按提示放上去,就不會(huì)有問(wèn)題,所以帝國(guó)在安全性、穩(wěn)定性、易用性又非常不錯(cuò)。
舉例來(lái)說(shuō)吧,有一個(gè)用帝國(guó)CMS做精品故事網(wǎng)的朋友(http://www.pmume.com ),想實(shí)現(xiàn)如下圖所示內(nèi)容頁(yè)分頁(yè)標(biāo)題導(dǎo)航。
我看了下,帝國(guó)論壇也有非常多的朋友有這個(gè)需求,但基本沒(méi)有看到有很好的解決。然后我看了下帝國(guó)的標(biāo)簽的代碼,他內(nèi)置其實(shí)有一個(gè)內(nèi)容頁(yè)分頁(yè)下拉導(dǎo)航標(biāo)簽。本來(lái)一般的程序的思維是實(shí)現(xiàn)數(shù)據(jù)和模板的分離,把數(shù)據(jù)處理好,其它的表現(xiàn)形式(是下拉列表,還是普通文字列表)這個(gè)交由模板來(lái)處理,而帝國(guó)中確全是由核心函數(shù)來(lái)處理的,在functions.php和t_functions.php中文件中單獨(dú)寫函數(shù)來(lái)處理這個(gè)標(biāo)簽,并且把HTML都封的很好了,呈現(xiàn)給大家。我為了實(shí)現(xiàn)內(nèi)容頁(yè)分頁(yè)標(biāo)題導(dǎo)航列表,仿照他的標(biāo)簽的實(shí)現(xiàn)方式,修改這兩個(gè)核心文件才能實(shí)現(xiàn)。而事實(shí)上,其它CMS中,只要先PHP文件中分析出文章的分頁(yè)標(biāo)題,記錄成數(shù)組變量,然后在模板中用循環(huán)標(biāo)簽循環(huán)一下就OK了,想怎么展現(xiàn)就怎么展現(xiàn)。(詳見(jiàn):http://bbs.chinaz.com/CMS/thread-2020475-1-1.html)。
帝國(guó)CMS和PHPCMS同樣都有自定義模型的功能,在字段自定義方面,帝國(guó)做的更人性化些,更適合新手朋友使用,而PHPCMS功能上是沒(méi)問(wèn)題的,有些設(shè)計(jì)上合理性差些,如定義字段只能存在副表(PCV9有了改進(jìn))。帝國(guó)CMS中每個(gè)模型都是單獨(dú)的數(shù)據(jù)主表+副表,不同模型間,數(shù)據(jù)ID無(wú)關(guān)聯(lián),這樣的問(wèn)題是不同的模型中有相同的ID的文章,涉及到全站數(shù)據(jù)操作的時(shí)候很糾結(jié),非得一個(gè)一個(gè)判斷模型,落葉今天在設(shè)計(jì)一個(gè)帝國(guó)CMS插件時(shí),深深的體會(huì)到了這樣的設(shè)計(jì)的杯具。PHPCMS所有模型共用一個(gè)主表,副表各自使用,即所有文章不管什么模型的標(biāo)題、摘要等信息都存放在統(tǒng)一的表中,這樣全站進(jìn)行數(shù)據(jù)調(diào)用都很方便,這樣的缺點(diǎn)也很明顯,自定義字段只能放在副表中,如果自定義的字段想作為數(shù)據(jù)調(diào)用的條件或者搜索條件,那就很杯具了,非得兩表聯(lián)合查詢,和把整篇文章的數(shù)據(jù)讀出來(lái),基本沒(méi)啥區(qū)別。
簡(jiǎn)言之,以這樣不太高的PHP水平,可以使用PHPCMS毫不費(fèi)力的設(shè)計(jì)出各種模型,包括房產(chǎn)模型、問(wèn)答模型、汽車模型等,只要了解模型的字段有哪些,流程怎樣,后臺(tái)建下模型,然后把list.php和show.php復(fù)制一份,作些個(gè)性修改,然后上傳下HTML文件模板即可,要偽靜態(tài)就偽靜態(tài),要生成靜態(tài)就生成靜態(tài)。而如果以帝國(guó)作二次開(kāi)發(fā),那么也可以很方便在后臺(tái)自定義模型建表,但是數(shù)據(jù)流程處理方面靈活性就缺很多了,在使用他的數(shù)據(jù)操作類,操作數(shù)據(jù)后,要熟悉他的模板處理方面,讀取模板,然后單純的寫函數(shù)來(lái)替換變量標(biāo)簽,如果要生成靜態(tài),他原來(lái)的內(nèi)容頁(yè)靜態(tài)生成函數(shù)還沒(méi)法通用,需要自己?jiǎn)渭儊?lái)寫一個(gè)靜態(tài)生成類。一句話,很痛苦!還不如自己全寫PHP了事。
下面是落葉此前在微博中的一些評(píng)述:4月10日 10:52
落葉: 今天開(kāi)始仔細(xì)研究下#帝國(guó)CMS#,一直在帝國(guó)備份王,但從沒(méi)細(xì)致使用過(guò)帝國(guó)CMS。帝國(guó)CMS初步印象:1.帝國(guó)CMS似乎延續(xù)幾年前的流行的ASP類CMS的風(fēng)格,類似動(dòng)易,尤其是模板綁定及標(biāo)簽這塊;2.后臺(tái)模型自定義方面和PHPCMS比較象,但比PHPCMS做的要細(xì)致。
4月10日 10:58
落葉: 其實(shí)早前也有安裝過(guò)#帝國(guó)CMS#進(jìn)行測(cè)試,而后來(lái)始終沒(méi)有用來(lái)正式建站:1.后臺(tái)太像老舊的ASP類CMS,而我對(duì)老一套的ASP類CMS的處理風(fēng)格很反感;2.模板記錄在數(shù)據(jù)庫(kù)里:做PHP的更喜歡模板直接以HTML文件的形式存放,這樣修改測(cè)試都會(huì)更方便,而存儲(chǔ)在數(shù)據(jù)庫(kù)中每次修改、保存,都有心理暗示-“可以失敗”
4月10日 11:02
落葉: 大多ASP類CMS中模板都是存儲(chǔ)在數(shù)據(jù)庫(kù)中,在修改模板提交時(shí),經(jīng)常會(huì)有部分代碼因安全限制、服務(wù)器配置、基至IDC敏感詞過(guò)濾而提交失敗,所以這類CMS在個(gè)性修改方面總是不夠方便。ASP類CMS中的特例是科訊CMS,他采用了PHP的思路,綁定HTML文件存儲(chǔ)的模板,而PHP類CMS中#帝國(guó)CMS#是特例,用數(shù)據(jù)庫(kù)記錄模板
4月10日 11:04
落葉: #帝國(guó)CMS#按個(gè)人經(jīng)驗(yàn),以HTML文本記錄模板,然后后臺(tái)綁定的好處在于:1.不擔(dān)心提交時(shí)模板損壞或在線修改無(wú)法撤消;2.要替換模板,直接FTP下載原模板,改名后上傳,后臺(tái)綁定,這點(diǎn)#PHPCMS#中做的似乎是最靈活的??梢匀我鉃槿魏螜谀咳魏雾?yè)面定義個(gè)性化的模板,而操作只是下載-》改名-》修改-》上傳-》綁定
4月10日 11:11
落葉: #帝國(guó)CMS#、DEDECMS更像成品,#PHPCMS#更像框架,單論標(biāo)簽調(diào)用:帝國(guó)和DEDECMS內(nèi)置標(biāo)簽很多都局限在特定模塊或欄目,封裝完整,優(yōu)點(diǎn)是用起來(lái)省事,缺點(diǎn)是不夠靈活;PHPCMS更適合程序員思路,一條SQL搞定,直接模板中用GET標(biāo)簽SQL查詢,個(gè)性化開(kāi)發(fā)很省事。試圖從帝國(guó)萬(wàn)能標(biāo)簽中找尋GET標(biāo)簽影子,無(wú)果
2.程序穩(wěn)定性模板標(biāo)簽易用性角度講:
PHPCMS中的標(biāo)簽都是以程序員的思維來(lái)實(shí)現(xiàn),首頁(yè)、列表頁(yè)的標(biāo)簽TAG標(biāo)簽和GET標(biāo)簽實(shí)際都是生成SQL語(yǔ)句,解析成函數(shù)執(zhí)行;內(nèi)容頁(yè)的標(biāo)簽實(shí)現(xiàn)是變量,即PHP控制文件中把數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀取出來(lái),根據(jù)字段類型處理成干干凈凈的數(shù)據(jù),放在變量中,然后PHP內(nèi)容頁(yè)模板中直接使用這些變量,邏輯判斷也好,進(jìn)一步函數(shù)處理也好,想怎么處理就怎么處理,更符合程序員的思維。但普通用戶用起來(lái)可能比較揪心,改個(gè)模板還要懂PHP邏輯思維和SQL語(yǔ)句,從PHPCMS部分模塊的明顯的BUG殘留來(lái)看,其實(shí)可以判斷那些模塊基本很少有人使用。(當(dāng)然PCV9應(yīng)該作了很大改進(jìn),這里不討論。)帝國(guó)CMS中的標(biāo)簽才算是傳統(tǒng)意義上最正宗的標(biāo)簽,他和動(dòng)易(ASP類的CMS)的標(biāo)簽處理思維極像,這個(gè)標(biāo)簽是代表什么的,然后程序處理好后,直接整塊替換。使用起來(lái)非常方便,并且帝國(guó)在細(xì)節(jié)上做的也非常優(yōu)秀,在模板的下方都仔仔細(xì)細(xì)標(biāo)示出來(lái)所有可以使用的標(biāo)簽,站長(zhǎng)朋友們只需要按提示放上標(biāo)簽就行了,省事,安心。缺點(diǎn)這樣標(biāo)簽只算標(biāo)簽,不是干凈的數(shù)據(jù),處理起來(lái)缺乏個(gè)性化,雖然帝國(guó)CMS模板也支持PHP,便是由于他的模板生成方式?jīng)]是先解析變量成PHP,再處理,而是一邊處理好標(biāo)簽的數(shù)據(jù),生成時(shí)替換,所以限制也很明顯。上面有提到朋友的精品故事網(wǎng)是使用帝國(guó)CMS做的,在文中提到實(shí)際是有意推薦,因?yàn)檫@個(gè)朋友在不懂任何程序的情況下,使用帝國(guó)CMS把網(wǎng)站做得非常優(yōu)秀,這也正說(shuō)明帝國(guó)在細(xì)節(jié)上做的非常優(yōu)秀。上面廢話了一大堆,其實(shí)基本意思也就兩點(diǎn):不需要過(guò)多二次開(kāi)發(fā)的朋友,使用帝國(guó)CMS等會(huì)相對(duì)比較不錯(cuò),而對(duì)二次開(kāi)發(fā)要求比較多,并且對(duì)PHP比較熟的朋友,完全可以把PHPCMS當(dāng)作一個(gè)框架來(lái)使用,BUG不是問(wèn)題,這樣改的才爽,最怕是的像帝國(guó)那樣寫的很死了沒(méi)法改。當(dāng)然,文章中主要提取帝國(guó)CMS和PHPCMS,似乎把使用DEDECMS的同學(xué)給忽視了,實(shí)現(xiàn)來(lái)講,我遇到的站長(zhǎng)朋友使用DEDECMS的還是居多數(shù),這款CMS穩(wěn)定性和標(biāo)簽的易用性是介于帝國(guó)CMS和PHPCMS之間的,落葉這里只是把兩個(gè)極端作了下分析,希望能給朋友們有些提示。
相關(guān)文章
帝國(guó)CMS根據(jù)內(nèi)容正文字段[newstext]批量獲取描述簡(jiǎn)介字段[smalltext]的
這篇文章主要介紹了帝國(guó)CMS根據(jù)內(nèi)容正文字段[newstext]批量重新生成簡(jiǎn)介字段[smalltext]的方法,需要的朋友可以參考下2023-06-26帝國(guó)CMS 7.2和7.5適用的火車頭采集免登陸發(fā)布模塊配置方法詳解(親測(cè)可
帝國(guó)cms7.2版本開(kāi)始增加了金剛模式,登錄發(fā)布有難度。親測(cè)可用的帝國(guó)CMS 7.2/7.5適用免登陸新聞發(fā)布模塊插件配合火車采集器,可以解決這類問(wèn)題??胺Q完美2022-04-21帝國(guó)cms高危SQL注入漏洞(盲注)系統(tǒng)自帶RepPIntvar過(guò)濾函數(shù)使用方法
帝國(guó)cms開(kāi)發(fā)的時(shí)候要注意一些危險(xiǎn)的注入漏洞,防止被黑,RepPIntvar為系統(tǒng)自帶函數(shù)可以起到過(guò)濾字符的作用,下面就為大家介紹一下使用方法2021-07-26帝國(guó)cms后臺(tái)啟用SESSION驗(yàn)證增加安全性
帝國(guó)cms后臺(tái)啟用SESSION驗(yàn)證所有的登錄信息都是保存在服務(wù)器端的,尤其是公共場(chǎng)所登錄用默認(rèn)的cookies是不安全的2021-07-26帝國(guó)CMS7.2版升級(jí)到7.5版的詳細(xì)步驟方法(已測(cè))
最近需要將老版本的帝國(guó)cms將7.2升級(jí)到7.5版本,參考這篇文章完美升級(jí),特分享一下給需要的朋友2020-08-02帝國(guó)cms常用標(biāo)簽調(diào)用方法(靈動(dòng)標(biāo)簽和萬(wàn)能標(biāo)簽的調(diào)用方法)
整理了一些常用的帝國(guó)CMS調(diào)用,靈動(dòng)標(biāo)簽和萬(wàn)能標(biāo)簽的調(diào)用方法舉例,包括幻燈片、標(biāo)題、一級(jí)欄目、二級(jí)欄目、帶模版的友情鏈接(下拉菜單)、判斷內(nèi)容頁(yè)字段為空時(shí)是如何調(diào)用2020-02-04帝國(guó)cms網(wǎng)站地圖sitemap.xml的制作方法
這篇文章主要介紹了帝國(guó)cms網(wǎng)站地圖sitemap.xml的制作方法,需要的朋友可以參考下2020-02-04帝國(guó)CMS數(shù)據(jù)更新中心設(shè)置教程(更新網(wǎng)站細(xì)節(jié))
在使用帝國(guó)cms的時(shí)候有時(shí)候需要把前臺(tái)數(shù)據(jù)都更新一下,那么就可以參考下面的文章了,要不漏掉了部分就達(dá)不到更新的目地了2020-02-04帝國(guó)CMS后臺(tái)登錄界面及后臺(tái)界面修改方法
今天接到網(wǎng)友詢問(wèn)怎么修改后臺(tái)登錄界面及后臺(tái)界面,特把方法分享出來(lái)需要的朋友可以參考下2020-02-04- 最近仿站團(tuán)隊(duì)接到很多仿站客戶訂單,這里面有一個(gè)這樣的功能,表單提交,今天花時(shí)間寫個(gè)教程給大家,需要的朋友可以參考下2020-02-02