经常见站长论坛有人提到选哪个CMS好,最近也又有朋友在51LA站长群里问到PHPCMS和帝国CMS比较选哪个好的问题,所以落叶今天从PHPCMS及帝国CMS对比的角度来谈谈站长应该如何选择适合自己的CMS。

落叶自诩对现在主流CMS及建站程序还是有足够多了解的,从接触混互联网开始使用过的并且作过小量二次开发的CMS和建站程序有早期的动易siteweaver、DEDECMS、PHPCMS2008、帝国CMS、科讯CMS、无忧CMS、风讯CMS 、DISCUZ、UCHOME、HDWIKI、新云CMS等(以前负责的一个网站是Siteweaver+2*PHPCMS+HDWIKI+DISCUZ7.0+UCHOME搭建的行业门户,二次开发比较多,所以相对比较了解,至于其它CMS因为常有很多朋友向我问到各种各样的CMS使用问题,所以我也常做一些测试和一些小量二次开发)。

从落叶的经验来看,站长在选择一款CMS时,大概一般会考虑如下方面:

1) 程序是否安全稳定,会不会经常有BUG

2) 程序使用简不简单

3) 程序生成静态速度是否够快

4) 程序模板多不多,模板好不好做,标签好不好用

5) 程序负载能力强不强

6) 程序模块多不多,如有没有房产模块、有没有黄页模块、分类信息模块、问答模块等

7) 程序二次开发是否灵活

擅长或喜欢二次开发的基本首先会考虑二次开发的灵活性,及模块方面有没有适合自己的;而普通用户则更多的考虑程序易不易于使用,模板标签简不简单,所以CMS选择的焦点基本集中的二次开发的灵活性和模板标签的易用性两方面了。

落叶接触到的这些CMS或建站程序,也基本上是大家现在用的比较多的,其中PHPCMS是落叶最为熟悉的,二次开发最多的,而帝国CMS也只是最近因为有朋友要我帮忙使一些帝国CMS的插件和进行一些细节修改,所以才用到,对比发现PHPCMS和帝国CMS在很多设计思路上比较相近,但又似乎完全是两种不同的风格,落叶觉得比较典型,所以以这两款CMS来作对比分析。

1.从二次开发的角度来讲:

在我看来,PHPCMS(2008版)更多算作是一个开发框架,离一个成熟的产品太远,先后使用PHPCMS二次开发搭建过五六个平台,从刚发布的PHPCMS2008版,及现在的PHPCMS2008 sp4版(pcv9不作评价,开发初期做过较多的测试、反馈过一些建议,但正式版我并没用过),每一次我都会遇到同样的问题,总是边骂低级错误边作修改,到现在官方停止开发了,很多刚发布时的BUG都还存在。虽然如此,PHPCMS仍然是首选的CMS,为啥,就是他很灵活,想怎么改就可以怎么改,想到即可以做到。在我看来PHPCMS代表了一种极端,即如果首要考虑二次开发,那PHPCMS是不错的选择。

PHPCMS中想实现任何数据的读取只要写一条SQL,然后面模板中GET标签调用下就行了,如果觉得模板中处理的不够,那么只需要在对应同名的PHP文件中作些处理就行了。甚至,只需要在头部引用common.php文件,调用模板引用函数引用模板,然后建一个同名的HTML文件作为模板,即可在PHPCMS的基础上实现很多想要的功能。

帝国CMS,虽然官方的宣传语也是想到即可做到,但从我在对帝国CMS作一些简单功能需求的修改及插件开发来看,帝国CMS离想到即可做到太远,限制在帝国的开发思路之下,有些功能即使是很小的功能,也需要对帝国的核心程序大动干戈。就拿一个简单的需求“我想获取内容页分页的页码,以根据不同的分页来实现一些不同的显示”,这个需求的后面不谈,单就获取内容页分页的页码来讲,几乎是不可能,为啥呢?第一,他没有这个标签,也没有提供变量,论坛里很多人提到这一需求,始终无法解决;第二,帝国的模板标签解析方式是老的动易的思维即程序先处理好每一个标签的结果,连HTML都带上了,然后把存储在数据库中的模板读出来,把里面的标签一个一个替换,基本上内容页的每一个标签都是经过了一个专门的处理过程来实现,耦合度太高,大部分代码都没法通用。(现在主流模板引擎都是先把标签解析编译好,然后缓存,标签已经变成可执行的PHP程序,然后程序处理好数据后直接调用模板缓存,执行。标签都是通过统一的方式来处理的,通用性较强。)而也正因为每个标签都封装的很好,做的很完整了,所以使用起来又非常简单稳定,只要按提示放上去,就不会有问题,所以帝国在安全性、稳定性、易用性又非常不错。

举例来说吧,有一个用帝国CMS做精品故事网的朋友(http://www.pmume.com ),想实现如下图所示内容页分页标题导航。

我看了下,帝国论坛也有非常多的朋友有这个需求,但基本没有看到有很好的解决。然后我看了下帝国的标签的代码,他内置其实有一个内容页分页下拉导航标签。本来一般的程序的思维是实现数据和模板的分离,把数据处理好,其它的表现形式(是下拉列表,还是普通文字列表)这个交由模板来处理,而帝国中确全是由核心函数来处理的,在functions.php和t_functions.php中文件中单独写函数来处理这个标签,并且把HTML都封的很好了,呈现给大家。我为了实现内容页分页标题导航列表,仿照他的标签的实现方式,修改这两个核心文件才能实现。而事实上,其它CMS中,只要先PHP文件中分析出文章的分页标题,记录成数组变量,然后在模板中用循环标签循环一下就OK了,想怎么展现就怎么展现。(详见:http://bbs.chinaz.com/CMS/thread-2020475-1-1.html)。

帝国CMS和PHPCMS同样都有自定义模型的功能,在字段自定义方面,帝国做的更人性化些,更适合新手朋友使用,而PHPCMS功能上是没问题的,有些设计上合理性差些,如定义字段只能存在副表(PCV9有了改进)。帝国CMS中每个模型都是单独的数据主表+副表,不同模型间,数据ID无关联,这样的问题是不同的模型中有相同的ID的文章,涉及到全站数据操作的时候很纠结,非得一个一个判断模型,落叶今天在设计一个帝国CMS插件时,深深的体会到了这样的设计的杯具。PHPCMS所有模型共用一个主表,副表各自使用,即所有文章不管什么模型的标题、摘要等信息都存放在统一的表中,这样全站进行数据调用都很方便,这样的缺点也很明显,自定义字段只能放在副表中,如果自定义的字段想作为数据调用的条件或者搜索条件,那就很杯具了,非得两表联合查询,和把整篇文章的数据读出来,基本没啥区别。

简言之,以这样不太高的PHP水平,可以使用PHPCMS毫不费力的设计出各种模型,包括房产模型、问答模型、汽车模型等,只要了解模型的字段有哪些,流程怎样,后台建下模型,然后把list.php和show.php复制一份,作些个性修改,然后上传下HTML文件模板即可,要伪静态就伪静态,要生成静态就生成静态。而如果以帝国作二次开发,那么也可以很方便在后台自定义模型建表,但是数据流程处理方面灵活性就缺很多了,在使用他的数据操作类,操作数据后,要熟悉他的模板处理方面,读取模板,然后单纯的写函数来替换变量标签,如果要生成静态,他原来的内容页静态生成函数还没法通用,需要自己单纯来写一个静态生成类。一句话,很痛苦!还不如自己全写PHP了事。

从PHPCMS、帝国CMS谈站长如何选择适合自己的CMS的更多相关文章

  1. 如何选择适合自己的CMS建站系统

             在互联网发展突飞猛进的今天,可谓”得市场者得天下”,而电商已成为占据市场速度最快.范围最广的手段,进而网站建设也逐渐引起商家重视,并深入到了企业和个体的发展战略之中. 如今企业建站已 ...

  2. 织梦cms PHPcms 帝国cms比较

    现在建网站不需要请程序员从基础的程序开发做起了,有专业的建站工具,CMS是使用最广泛的建站工具.CMS是Content Management System 现在建网站不需要请程序员从基础的程序开发做起 ...

  3. [转] Portable Trac 简单介绍 - 兼谈为什么不选择 Redmine

    Portable Trac 简单介绍 - 兼谈为什么不选择 Redmine ​Trac是一个轻量级的软件项目管理环境,如果在工作中涉及一个开发团队的管理并且关心项目管理工具的话,相信都在 ​Trac. ...

  4. 如何选择适合的前端UI框架

    根据近几年前端框架的热门,在前端开发框架不断更新与交换的时代,每一年都有黑马出现,是否适合自己开发的项目就不得而知了,只有认真的了解之后才能知道,这里主要给大家说一下如何选择适合旅游的前端UI框架?相 ...

  5. 如何选择适合自己的Linux版本

    如何选择适合自己的Linux版本: 1.Linux桌面系统,首选Ubuntu; 2.服务器端的Linux系统,首选RHEL或CentOS,这两种中首选CentOS,如果公司有钱,不在乎成本也可以选择R ...

  6. mac电脑怎么投屏?教你选择适合自己的Mac投屏软件

    mac上有什么好的投屏软件嘛?苹果手机ios投屏到mac用哪款投屏软件,mac投屏ipad该用哪款软件怎么操作,macdown小编给大家介绍的这几款Mac投屏软件,各有各的特色,总有一款适合你投屏. ...

  7. k8s集群Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式?

    k8s的Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式? 简单聊聊你对工作负载Job的理解? Job 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算 ...

  8. 开源CMS的比较和选择

    最近就cms系统折腾了一下,主要还是以 构架为主,以下做一个大概的比较: 1. Nuke 一般称为DNN,这是最开始Microsoft发布 的时候,用vb做了一个web的演示例子,最终这个例子发展成了 ...

  9. Kooboo CMS技术文档之二:Kooboo CMS的安装步骤

    在IIS上安装Kooboo CMS Kooboo CMS安装之后 安装的常见问题 1. 在IIS上安装Kooboo CMS Kooboo CMS部署到正式环境相当简单,安装过程是一个普通MVC站点在I ...

随机推荐

  1. 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码

    上篇介绍了隐马尔科夫模型 本文给出关于问题3解决方法,并给出一个例子的python代码 回顾上文,问题3是什么, 下面给出,维比特算法(biterbi) algorithm 下面通过一个具体例子,来说 ...

  2. 【HDOJ】4601 Letter Tree

    挺有意思的一道题,思路肯定是将图转化为Trie树,这样可以求得字典序.然后,按照trie的层次求解.一直wa的原因在于将树转化为线性数据结构时要从原树遍历,从trie遍历就会wa.不同结点可能映射为t ...

  3. hibernate实体的几种状态:

    hibernate实体的几种状态: 实体的生命周期中,实体主要经过瞬时(Transient),托管(Attatched或Managed),游离(Detached)和销毁(Removed)四个状态. 瞬 ...

  4. ASP.NET的六种验证控件的使用

    C# 中的验证控件分为一下六种 :1 CompareValidator:比较验证,两个字段的值是否相等,比如判断用户输入的密码和确认密码是否一致,则可以用改控件: 2 CustomValidator ...

  5. Nhibernate与Dapper对比,及Nhibernate增删改和9种查询语法

    1,Sql语法. NH:HQL Dapper:原生Sql. 点评:原生Sql可以直接放在数据库里执行,Hql不行,且Hql增加学习负担.(Hn也可以原生Sql,但好像用的不多呀) 2,开发速度. NH ...

  6. Android UI设计系统-android selector 开始自定义样式

    Selector的结构描述: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:a ...

  7. Java泛型类与类型擦除

    转载自:http://blog.csdn.net/lonelyroamer/article/details/7868820 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型. ...

  8. RMAN备份与恢复深入解<一>

    一 数据库版本 SQL> select *from v$version; BANNER ----------------------------------------------------- ...

  9. oracle11g dataguard部署指南

    一.Oracle11DB+DG配置 1. 单机环境介绍(PRIMARY DATABASE) 主库 primary public ip                    192.168.0.252 ...

  10. StrutsPrepareAndExecuteFilter的作用

    FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如 2.1.6.2.1.8.StrutsPrepareAndExe ...