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自定义模型功能,实际还有很多值得对比分析的地方,都各有优缺点,实现应用中总会有感觉很爽的地方,同时也会有很纠结的地方,在这些方面我是深有感触的。
当然,本文并不在绝对的得出哪款CMS更好,哪款CMS不好的结论,只是根据自己实际使用的感触作一些简单的对比分析,上面对比的谁优于谁也只是基于我个人的感受,具体不同层次的用户依个人习惯可能感受不同,希望能给朋友们一些参考。