"景先生毕设|www.jxszl.com

PHPCMS和帝國CMS二次开发優缺点分析及站长如何适合自己的CMS 推荐

2022-10-28 23:36编辑: www.jxszl.com景先生毕设
作者:落叶(lyrs.net)(t.qq.com/guohui)
经常见站长论坛有人提到选哪个CMS好,最近也又有朋友在VI.LA站长群里问到PHPCMS和帝国CMS比较选哪个好的问题,所以落叶今天从PHPCMS及帝国CMS对比的角度来谈谈站长应该如何选择适合自己的CMS.
落叶自诩

 更多精彩就在: 51免费论文网|www.jxszl.com 
对现在主流CMS及建站程序还是有足够多了解的,从接触混互联网开始使用过的并且作过小量II次开发的CMS和建站程序有早期的动易siteweaver.DEDECMS.PHPCMSII00VIII.帝国CMS.科讯CMS.无忧CMS.风讯CMS.DISCUZ.UCHOME.HDWIKI.新云CMS等(以前负责的I.个网站是Siteweaver+II*PHPCMS+HDWIKI+DISCUZVII.0+UCHOME搭建的行业门户,II次开发比较多,所以相对比较了解,至于其它CMS因为常有很多朋友向我问到各种各样的CMS使用问题,所以我也常做I.些测试和I.些小量II次开发).
从落叶的经验来看,站长在选择I.款CMS时,大概I.般会考虑如下方面:
I.)程序是否安全稳定,会不会经常有BUG
II)程序使用简不简单
III)程序生成静态速度是否够快
IV)程序模板多不多,模板好不好做,标签好不好用
V)程序负载能力强不强
VI)程序模块多不多,如有没有房产模块.有没有黄页模块.分类信息模块.问答模块等
VII)程序II次开发是否灵活
擅长或喜欢II次开发的基本首先会考虑II次开发的灵活性,及模块方面有没有适合自己的;而普通用户则更多的考虑程序易不易于使用,模板标签简不简单,所以CMS选择的焦点基本集中的II次开发的灵活性和模板标签的易用性两方面了.
落叶接触到的这些CMS或建站程序,也基本上是大家现在用的比较多的,其中PHPCMS是落叶最为熟悉的,II次开发最多的,而帝国CMS也只是最近因为有朋友要我帮忙使I.些帝国CMS的插件和进行I.些细节修改,所以才用到,对比发现PHPCMS和帝国CMS在很多设计思路上比较相近,但又似乎完全是两种不同的风格,落叶觉得比较典型,所以以这两款CMS来作对比分析.
I..从II次开发的角度来讲:
在我看来,PHPCMS(II00VIII版)更多算作是I.个开发框架,离I.个成熟的产品太远,先后使用PHPCMSII次开发搭建过VVI个平台,从刚发布的PHPCMSII00VIII版,及现在的PHPCMSII00VIIIspIV版(pcvIX不作评价,开发初期做过较多的测试.反馈过I.些建议,但正式版我并没用过),每I.次我都会遇到同样的问题,总是边骂低级错误边作修改,到现在官方停止开发了,很多刚发布时的BUG都还存在.虽然如此,PHPCMS仍然是首选的CMS,为啥,就是他很灵活,想怎么改就可以怎么改,想到即可以做到.在我看来PHPCMS代表了I.种极端,即如果首要考虑II次开发,那PHPCMS是不错的选择.
PHPCMS中想实现任何数据的读取只要写I.条SQL,然后面模板中GET标签调用下就行了,如果觉得模板中处理的不够,那么只需要在对应同名的PHP文件中作些处理就行了.甚至,只需要在头部引用common.php文件,调用模板引用函数引用模板,然后建I.个同名的HTML文件作为模板,即可在PHPCMS的基础上实现很多想要的功能.
帝国CMS,虽然官方的宣传语也是想到即可做到,但从我在对帝国CMS作I.些简单功能需求的修改及插件开发来看,帝国CMS离想到即可做到太远,限制在帝国的开发思路之下,有些功能即使是很小的功能,也需要对帝国的核心程序大动干戈.就拿I.个简单的需求我想获取内容页分页的页码,以根据不同的分页来实现I.些不同的显示",这个需求的后面不谈,单就获取内容页分页的页码来讲,几乎是不可能,为啥呢?第I.,他没有这个标签,也没有提供变量,论坛里很多人提到这I.需求,始终无法解决;第II,帝国的模板标签解析方式是老的动易的思维即程序先处理好每I.个标签的结果,连HTML都带上了,然后把存储在数据库中的模板读出来,把里面的标签I.个I.个替换,基本上内容页的每I.个标签都是经过了I.个专门的处理过程来实现,耦合度太高,大部分代码都没法通用.(现在主流模板引擎都是先把标签解析编译好,然后缓存,标签已经变成可执行的PHP程序,然后程序处理好数据后直接调用模板缓存,执行.标签都是通过统I.的方式来处理的,通用性较强.)而也正因为每个标签都封装的很好,做的很完整了,所以使用起来又非常简单稳定,只要按提示放上去,就不会有问题,所以帝国在安全性.稳定性.易用性又非常不错.
举例来说吧,有I.个用帝国CMS做精品故事网的朋友(http://www.pmume.com),想实现如下图所示内容页分页标题导航.
我看了下,帝国论坛也有非常多的朋友有这个需求,但基本没有看到有很好的解决.然后我看了下帝国的标签的代码,他内置其实有I.个内容页分页下拉导航标签.本来I.般的程序的思维是实现数据和模板的分离,把数据处理好,其它的表现形式(是下拉列表,还是普通文字列表)这个交由模板来处理,而帝国中确全是由核心函数来处理的,在functions.php和t_functions.php中文件中单独写函数来处理这个标签,并且把HTML都封的很好了,呈现给大家.我为了实现内容页分页标题导航列表,仿照他的标签的实现方式,修改这两个核心文件才能实现.而事实上,其它CMS中,只要先PHP文件中分析出文章的分页标题,记录成数组变量,然后在模板中用循环标签循环I.下就OK了,想怎么展现就怎么展现.(详见:http://bbs.chinaz.com/CMS/thread-II0II0IVVIIV-I.-I..html).
帝国CMS和PHPCMS同样都有自定义模型的功能,在字段自定义方面,帝国做的更人性化些,更适合新手朋友使用,而PHPCMS功能上是没问题的,有些设计上合理性差些,如定义字段只能存在副表(PCVIX有了改进).帝国CMS中每个模型都是单独的数据主表+副表,不同模型间,数据ID无关联,这样的问题是不同的模型中有相同的ID的文章,涉及到全站数据操作的时候很纠结,非得I.个I.个判断模型,落叶今天在设计I.个帝国CMS插件时,深深的体会到了这样的设计的杯具.PHPCMS所有模型共用I.个主表,副表各自使用,即所有文章不管什么模型的标题.摘要等信息都存放在统I.的表中,这样全站进行数据调用都很方便,这样的缺点也很明显,自定义字段只能放在副表中,如果自定义的字段想作为数据调用的条件或者搜索条件,那就很杯具了,非得两表联合查询,和把整篇文章的数据读出来,基本没啥区别.
简言之,以这样不太高的PHP水平,可以使用PHPCMS毫不费力的设计出各种模型,包括房产模型.问答模型.汽车模型等,只要了解模型的字段有哪些,流程怎样,后台建下模型,然后把list.php和show.php复制I.份,作些个性修改,然后上传下HTML文件模板即可,要伪静态就伪静态,要生成静态就生成静态.而如果以帝国作II次开发,那么也可以很方便在后台自定义模型建表,但是数据流程处理方面灵活性就缺很多了,在使用他的数据操作类,操作数据后,要熟悉他的模板处理方面,读取模板,然后单纯的写函数来替换变量标签,如果要生成静态,他原来的内容页静态生成函数还没法通用,需要自己单纯来写I.个静态生成类.I.句话,很痛苦!还不如自己全写PHP了事.
下面是落叶此前在微博中的I.些评述:IV月I.0日I.0:VII
落叶:今天开始仔细研究下#帝国CMS#,I.直在帝国备份王,但从没细致使用过帝国CMS.帝国CMS初步印象:I..帝国CMS似乎延续几年前的流行的ASP类CMS的风格,类似动易,尤其是模板绑定及标签这块;II.后台模型自定义方面和PHPCMS比较象,但比PHPCMS做的要细致.
IV月I.0日I.0:VVIII
落叶:其实早前也有安装过#帝国CMS#进行测试,而后来始终没有用来正式建站:I..后台太像老旧的ASP类CMS,而我对老I.套的ASP类CMS的处理风格很反感;II.模板记录在数据库里:做PHP的更喜欢模板直接以HTML文件的形式存放,这样修改测试都会更方便,而存储在数据库中每次修改.保存,都有心理暗示-可以失败"
IV月I.0日I.I.:0II
落叶:大多ASP类CMS中模板都是存储在数据库中,在修改模板提交时,经常会有部分代码因安全限制.服务器配置.基至IDC敏感词过滤而提交失败,所以这类CMS在个性修改方面总是不够方便.ASP类CMS中的特例是科讯CMS,他采用了PHP的思路,绑定HTML文件存储的模板,而PHP类CMS中#帝国CMS#是特例,用数据库记录模板
IV月I.0日I.I.:0IV
落叶:#帝国CMS#按个人经验,以HTML文本记录模板,然后后台绑定的好处在于:I..不担心提交时模板损坏或在线修改无法撤消;II.要替换模板,直接FTP下载原模板,改名后上传,后台绑定,这点#PHPCMS#中做的似乎是最灵活的.可以任意为任何栏目任何页面定义个性化的模板,而操作只是下载-改名-修改-上传-绑定
IV月I.0日I.I.:I.I.
落叶:#帝国CMS#.DEDECMS更像成品,#PHPCMS#更像框架,单论标签调用:帝国和DEDECMS内置标签很多都局限在特定模块或栏目,封装完整,优点是用起来省事,缺点是不够灵活;PHPCMS更适合程序员思路,I.条SQL搞定,直接模板中用GET标签SQL查询,个性化开发很省事.试图从帝国万能标签中找寻GET标签影子,无果
II.程序稳定性模板标签易用性角度讲:
PHPCMS中的标签都是以程序员的思维来实现,首页.列表页的标签TAG标签和GET标签实际都是生成SQL语句,解析成函数执行;内容页的标签实现是变量,即PHP控制文件中把数据库中的数据读取出来,根据字段类型处理成干干净净的数据,放在变量中,然后PHP内容页模板中直接使用这些变量,逻辑判断也好,进I.步函数处理也好,想怎么处理就怎么处理,更符合程序员的思维.但普通用户用起来可能比较揪心,改个模板还要懂PHP逻辑思维和SQL语句,从PHPCMS部分模块的明显的BUG残留来看,其实可以判断那些模块基本很少有人使用.(当然PCVIX应该作了很大改进,这里不讨论.)帝国CMS中的标签才算是传统意义上最正宗的标签,他和动易(ASP类的CMS)的标签处理思维极像,这个标签是代表什么的,然后程序处理好后,直接整块替换.使用起来非常方便,并且帝国在细节上做的也非常优秀,在模板的下方都仔仔细细标示出来所有可以使用的标签,站长朋友们只需要按提示放上标签就行了,省事,安心.缺点这样标签只算标签,不是干净的数据,处理起来缺乏个性化,虽然帝国CMS模板也支持PHP,便是由于他的模板生成方式没是先解析变量成PHP,再处理,而是I.边处理好标签的数据,生成时替换,所以限制也很明显.上面有提到朋友的精品故事网是使用帝国CMS做的,在文中提到实际是有意推荐,因为这个朋友在不懂任何程序的情况下,使用帝国CMS把网站做得非常优秀,这也正说明帝国在细节上做的非常优秀.上面废话了I.大堆,其实基本意思也就两点:不需要过多II次开发的朋友,使用帝国CMS等会相对比较不错,而对II次开发要求比较多,并且对PHP比较熟的朋友,完全可以把PHPCMS当作I.个框架来使用,BUG不是问题,这样改的才爽,最怕是的像帝国那样写的很死了没法改.当然,文章中主要提取帝国CMS和PHPCMS,似乎把使用DEDECMS的同学给忽视了,实现来讲,我遇到的站长朋友使用DEDECMS的还是居多数,这款CMS稳定性和标签的易用性是介于帝国CMS和PHPCMS之间的,落叶这里只是把两个极端作了下分析,希望能给朋友们有些提示.

原文链接:http://www.jxszl.com/biancheng/dedecms/72689.html