搞了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還不算太久