多学旁今天我来给大家详细对比分析下帝国CMS(ecms)、PHPCMS、DEDECMS(织梦),这三款CMS的优缺点。
1. 自定义模型流程对比
在CMS中自定义模型,我们一般最期望实现的两点是1)在数据库中建一个表,并且可自由设置表中有什么字段;2)建好字段后,后台数据添加表单能自动生成,前台数据展示直接能通过标签调用,而不需要自己写读取数据的PHP代码。
那么这三款CMS中是怎样满足我们的这两点期望的呢?
按照帝国CMS的官方提示,帝国CMS自定义模型一般步骤为1)系统分析、2)建立数据表、3)建立字段、4)建立系统模型。
帝国自定义模型的创建步骤实际为先建立一个数据表,然后建立字段,每一个字段类据类型等作详细设置后,再整体控制各个字段的用途及前台后台数据录入界面的格式即建立系模型。建立系统模型的过程实际是对数据字段在模型中所扮演的角色和权限的分配过程,如是否作为录入项、是否作为投稿项、是否可增加、是否可修改、是否作为结合项等。
按帝国的思维,建表和建字段只是完成了建数据库的操作,而系统模型建立的过程则为规划数据库如何使用的过程。
PHPCMS中添加自定义模型只有两步,先建立模型,然后添加字段。在添加模型的过程中不仅完成了一般意义上的建数据表的工作,同时,也完成对模型的一些初始化设置,如模型中的数据是否生成静态,栏目页、列表页、内容页的模板及URL规则等。
添加完模型后,会自动生成一部分字段,可对这些字段作修改或删除处理,同时可以自由增加字段。
PHPCMS中自定义模型建立字段时除了选择封装好的字段类型外,也整合了对字段属性的设置,如是否在前台投稿中显示、是否作为标签默认读取字段、是否作为标签调用排序字段等。
DEDECMS中自定义模型建立亦分为两步完成,建数据表作初始化设置然后添加字段。添加模型时可选择模型是自动模型、系统模型还是独立模型。独立模型可突破原来的主表+副表的模式,方便小数据量的灵活处理。
从三款CMS的自定义模型流程对比来看,帝国CMS的属性设置相对更为细致但似乎简洁性不够,很多描述过于专业或者不够明确,站长朋友们需要看较多帮助文档才能了解到每项的意思,而PHPCMS和DEDECMS中则相对简洁,一目了然知道每一项的涵义;PHPCMS和DEDECMS在建立模型表的同时完成了对模型的初始化设置,整个设置是针对整个模型的,与具体字段无关,属全局性设置,而帝国CMS中模型的设置则是整合了对字段的整体操作,在建好字段之后,细化到对字段的细节控制,属“微观调控”。
帝国CMS中能够单独设置字段的前台后台展示模板,相对更为灵活些; PHPCMS中则由于字段类型是以组件形式封装的,前台后台数据录入界面自动生成,简便,但在某些时候需要自定义部分字段的表单HTML时只有在模板中使用逻辑判断才能实现,灵活性稍缺乏。DEDECMS模型设置和PHPCMS类似,DEDECMS这块的优势在于可以选择数据模型是主表+副表的模式还是独立表模式,并且可以自由设定前台后台的数据处理PHP文件,方便二次开发。
按我的经验来看,帝国CMS这块的设置虽然很细致,但实际把问题复杂化了,据观察,帝国CMS的用户自定义模型的深度用户并不多。实际按照PHPCMS和DEDECMS的思路,建模型数据表的同时,对模型作一部分全局设置,然后单个字段中根据不同字段类型及不同需求作细节设置,这样的流程更直观更方便。
另外,PHPCMS中自定义模型后可直接预览模型的数据录入界面,方便查看字段设置的效果,这点非常方便。
所以,从自定义模型细节易用性对比来看:DEDECMS>PHPCMS>帝国CMS。
2.字段类型对比:
CMS中自定义字段有一个很好的优点就是都封装好了一些常见的字段类型,建立字段的同时,直接设置好了字段对应的表现形式,选择不同的字段类型,在会员中心投稿表单界面、后台数据录入界面及前台数据展示界面中都会有所不同,并且是自动呈现。举个例子,如果是PHP程序员需要实现对文章内容的存储,除了需要在数据库中添加一个字段外,还需要在数据录入表单中添加一个textarea,同时还要引用一些编辑器如fckeditor等。过程比较费事,并且存在许多重复性劳动。而如果在PHPCMS或者帝国CMS中实现这一需求,则只需要在建立字段时选择“编辑器”字段类型,在DEDECMS中也类似只需要选择“HTML文本”类型的字段即可。因为CMS的字段类型都将各种不同的字段进行了封装,添加字段时直接选择,然后自动生成的数据录入界面中和前台数据展示界面中,程序都会根据字段类型作一些处理,然后自动输出。(PHPCMS中生成表单界面时会调用input_form相关的类根据字段类型进行处理,在输出数据前,会调用output_form相关的类根据不同字段类型对数据进行处理)。
帝国CMS的字段类型
|
PHCMS的字段类型
|
DEDECMS的字段类型
|
单行文本框(text)
密码框(password)
下拉框(select)
单选框(radio)
复选框(checkbox)
多行文本框(textarea)
编辑器(editor)
图片(img)
FLASH文件(flash)
文件(file)
日期(date)
颜色(color)
选择外表关联字段(linkfield)
下拉外表关联字段(linkfieldselect)
|
单行文本
多行文本
选项
数字
编辑器
日期和时间
颜色和字型
图片
多图片
文件
镜像下载
多文件上传
栏目
类别
地区
标题
作者
来源
关键词
会员组
会员ID
推荐位
模板
转向链接
分页选择
视频
联动菜单
|
单行文本(varchar)
单行文本(char)
多行文本
HTML文本
文本保存HTML数据
整数类型
小数类型
时间类型
图片
图片(仅网址)
多媒体文件
附件类型
使用option下拉框
使用radio选项卡
Checkbox多选框
联动类型
|
从上表可见PHPCMS中字段类型的的丰富程度和实用性是明显优于帝国CMS和DEDECMS的。DEDECMS字段类型稍多于帝国CMS。
即:PHPCMS >DEDECMS>帝国CMS。
3.自定义字段属性选项对比:
有些时候设置的一些字段,我们希望只有管理员才能设置该字段的值;有些时候,添加的一些字段,我们希望能够方便和标题摘要一起在文章列表中调用;有些时候,添加的一些字段,我们希望这个字段添加后不能再被修改;有时些时候,添加的一些字段,我们希望实现只在后台数据录入界面中显示,而在前台投稿中不显示……这时候,灵活的字段属性选项,显得尤为重要。
那么这三款CMS中的字段属性有哪些差异?哪个最能满足用户的需求呢?
1)自定义字段是否可选择是否存在主表还是副表?
PHPCMS2008和DEDECMS的自定义字段只能添加到副表中,帝国CMS自定义字段则可选择是添加在主表中还是副表中,这样的好处在于,自定义字段可以方便作为数据调用条件和查询条件和在文章列表中调用,而如果单纯只加在副表中,一旦涉及到数据联合查询,效率会低很多,并且即使是简单的标题+摘要+自定义字段显示的文章列表中都非得多表联合查询,人为增加SQL查询复杂度,降低效率。很典型的问题是在涉及到联动筛选的情况时,自定义字段如果不能选择存储在主表中,会人为制造非常大的麻烦。
如上图所示的,联动筛选字段(帝国CMS和DEDECMS中称作结合项),如果是想要用PHPCMS2008和帝国CMS来自定义,售价、面积、户型等自下义字段,只能添加在副表中,结果是非常痛苦的,每个条件的查询都要主表和副表同时查询,并且查询条件分期在主表中和副表中时,要同时满足条件,非得join查询。 如果涉及排序等,更是头痛,反正是人为自找麻烦。如果能选择直接把字段字义表主表中,这样,这类数据量存储不大的字段,不会明显增加主表的负担,但查询和读取都直接是单表操作,非常方便。帝国CMS中这点做的比较不错,并且有提供了单独的结合项功能。DEDECMS中貌似也有结合项功能,适用于多条件筛选的情况。
所以,这一点,帝国CMS>DEDECMS>PHPCMS。
2)字段的权限设置
有些字段,只希望在管理员或者编辑人员在编辑信息时才能设置,普通用户不给设置权限,这就需要给自定义字段一个完整的权限系统。这一点PHPCMS中做的非常不错,可以直接能过勾选“不允许设置该字段值的会员组”的选项来实现。帝国CMS中最后一步“系统模型建立”中“可增加”、“可修改”这几项似乎有权限设置的影子,只是实现了部分权限功能,而DEDECMS中则没有看到明确的字段权限设置选项。
所以,这一点PHPCMS>帝国CMS>DEDECMS。
3)不在前台投稿中显示
有些时候设置某些字段,虽然普通会员也可以有给他赋值的权限,但是不需要或者不想在前台投稿中显示(如摘要等,有时候想简单点,只让用户发个标题和内容),所以很需要实现某个自定义字段只在后台编辑时可以填写,而在前台投稿界面中不自动显示。关于这点,在PHPCMS中只需设置“是否在前台投稿中显示”项为否即可,DEDECMS中字段选项中“前台参数”项中的“前台投稿及采集规则禁用本字段”亦实现了这一需求,至于帝国CMS中,可以通过系统模型设置是否为录入项实现,但似乎不够直观。
有时候,在使用PHPCMS自定义字段时,不希望字段在前台投稿中显示的另一个原因是,想对添加的一部分字段的表单样式作单独的修改或者作一些JS处理,PHPCMS内置的字段样式不太够用或者不太方便,所以在设置字段时选择不在前台投稿中显示,然后在模板中按需求手动添加这个字段的表单项,这一点在DEDECMS中有自定义表单HTML项,不需要像PHPCMS中这样变相实现字段HTML项的定义,帝国CMS中添加自段时有提供定义前台后台录入数据表单HTML的设置项,但他同时写出了提示“增加字段时请留空”,这个做法不太理解,不过,他在进行系统模型定义的最后一步可以统一设置每个字段的前后台数据录入界面表单HTML。不过,DEDECMS和帝国CMS中的字两项设置对普通新手用户可能反而带来疑惑,对熟悉二次开发的倒是挺方便的。
从这个小点来看,普通用户PHPCMS>DEDECMS>帝国CMS,二次开发DEDECMS>帝国CMS>PHPCMS。
关于帝国CMS、PHPCMS、DEDECMS这三款CMS自定义模型功能,实际还有很多值得对比分析的地方,都各有优缺点,实现应用中总会有感觉很爽的地方,同时也会有很纠结的地方,在这些方面我是深有感触的。