体验Joomla2.5,从joomla1.5说起
搞了joomla1.5二次开发一年多,已经算是对joomla非常了解了,joomla1.5总体来说还是不错的,不过系统自身还是有不少的缺点,我一一列举一下:
1. 文章组件层次
当你建一篇文章,要么不属于任何分类,要么需要选一个分类,而且这个分类必需要属于一个单元,也就是文章的层次性是:单元/分类,也就是二级分类。不过很多时候,只有两个级别是不够的,更复杂的内容需要三级或以上层次。Joomla的确有很多插件,但没有一个可以直接扩展文章组件的功能,因为这是系统限制,文章组件没有对向提供很多接口。所以这个问题只有用第三方CCK(内容管理工具)组件来取代默认的文章组件。但这就让系统变得很奇怪,文章组件是CMS系统中最重要的元素,现在却要用第三方取代,而且还不能把文章组件删除,这让很多使用者感到不爽
2. 文章不能关联一张图片
也是文章组件的问题。虽然文章正文可以插入图片,但文章不能关联图片。这很多地方需要用到的,例如有缩略图片展示的文章列表,纯文字的列表会显得很枯燥,所以文章列表带图片是很正常的。这可以安装News Show Pro GK4或者使用第三方CCK组件。
3. 固定的用户分组
Joomla1.5有固定的分组,甚至是对每个分组所拥有的权限分配得比较细,但分组是不能编辑的权限也不能调整。所以很多组件可能会直接忽略其权限特性,不让非管理员身份的人去管理组件。这就非常受限了,例如站的内容多了,站长老大想请几个录入人员来管理部分的内容,这都很难以实现。
4. SEF URL,搜索友好的链接
这个的确没办法,joomla天生的URL格式是index.php?option=com_content,而drupal的原地址格式是index.php?/node/1。可以想象把一堆GET参数转为短地址格式有多麻烦。这种SEF URL的实现原理是系统先分析短地址,通过程序运算或者数据库对比匹配,才得到真实的地址。所以如果要调整短地址的格式,你需要编辑router.php,来改写匹配规则。使用joomla的人大多数不会写代码,所以大部分人会选择第三方SEF组件,例如sh404sef,它的匹配原理就是数据库记录匹配。
但也由于Joomla1.5缺乏接口的关系,一些内容结构的改动或者是错误的链接,都可能让这些SEF组件判断错误而产生坏链接。这个问题非常头痛,试想想客户只是把文章从一个分类改到另一个分类,文章就无固不能访问。又或者某文章有个坏链接,就把其它好链接破坏了。客户只有天天找你说事,认为你做的系统稳定性不行。
5. API弱爆了
程序员当然想系统的API越丰富越好,自己可以做少很多事情。但joomla就有这样的不好,你在自带组件能看到的,全部都有API,但你没看到的,就别认为它会给你API,joomla的API就够自己用而已。
例如组件很常用的API是图片缩放功能,都没有一个统一的API提供,这使得所有图片管理组件只能各自实现自己的图片缩放功能,管理体验非常不统一。更有些比较大型的组件,例如VirtueMart、Mosets Tree、Community Builder等,都在joomla层上再建一层框架,框架上的框架!你们看不起Joomla都不用那么吊吧?不过有时候看这些大型组件的架构,貌似真的比joomla要好,怪不得那么吊。技高人胆大,今天不是你joomla有点名气,这些老大都不用寄你的篱下,身在你家,还是不服你的规矩。
可这些都苦了我们程序员,试想想一个系统,几个框架,你用大型组件还要学习它的结构,它的语言包、模板放的位置可能都不一样。
6. Joomla1.5官方很快就停止更新了,现在新组件也很少考虑1.5的,组件会越来越少。
体验Joomla2.5
1.5到2.5之间,经历过1.6, 1.7两个版本,其实中间两个都是过渡版,这说明了1.5与2.5的差异是多么的大。1.6到2.5的组件几乎都可以安装在2.5上,1.5的组件就完全不能装到2.5上(不过对于实力团队,他们做的组件一般可以在1.5到2.5成功安装,但这中间加了多少兼容层,真的不计其数)。
很多人看2.5跟1.5没什么分别,又因为2.5组件不比1.5多,所以很多新人都被人劝了去搞1.5了。我喜欢新鲜事物,把赌注都压在2.5上,来了解这个系统的差异。
我现在所能了解的优点如下:
1. 无限级分类
如果新版本还不是无限级分类,我真的要放弃joomla了,这种改进是理所当然的。
2. 文章组件可以带图片
文章组件更人性化了,可调整的地方比较多,也可以上传列表缩略图与正文大图。基本上会改点模板的话,那些新闻列表组件可以不用装。
3. 可编辑用户分组
分组可以自由编辑了,对于开发对权限管理有深度要求的网站更得心应手。而且joomla2.5提供了权限相关的API,要实现组件的权限功能只需要添加一个XML文件就可以。
4. API丰富了不少
在1.5要做一个后台组件,你真的需要抄不少代码,因为就连Joomla最基础的操作功能,joomla都没有把代码封装好,很多成员方法需要写,但因为代码太多,抄都容易抄错。2.5提供了几个管理功能封装类,传统的管理功能只需要model和controller去继承那些类就可以实现大部分效果。并且有我很喜欢的jimage类,缩略功能不用再带第三方库了。
5. JForm
JForm是个新概念,它可以让你的表单基于一个XML文件来架构,方便了编辑功能的制作,而且也允许扩展field,自己做了什么很炫的field,以后可以直接复用,十分容易管理。
6. 实力团队开始守规矩了
VirtueMart 1.1.9是个非常稳定的版本,但只可以装在1.5上。而新发布的VirtueMart2可以支持2.5,虽然使用上没什么分别,但内核却是翻天复地的变化,第二版本完全用joomla标准重写,好像是VirtueMart团队已经折服于joomla2.5了,不再搞英雄主义。这是个好的开始,说明joomla2.5所提供的环境并不弱,不必自己再建二层框架。
PS:以上是我最近对joomla2.5研究的一些心得总结,我使用joomla2.5还不算太久