joomla與drupal核心差異分析

2022-01-22 12:13:54 字數 1787 閱讀 9995

joomla與drupal最大的分別,是程式之間的溝通性。

drupal的主要由module組成,而module之間用hook來溝通。而hook正是drupal的主要核心,所以module之間的溝通性很良好。

joomla由component組成,component之間的溝通只有通過plugin進行,而joomla的plugin並未受到重視,功能很弱,所以component之間的溝通相當不容易,使joomla發展至今component仍然是獨立模式,不能達到互補的效果,大大影響擴充套件深度。

不能否認,程式之間的互補很重要,乙個程式要完成所有相關程式編寫的話,**量會相當多,而且不能被復用。例如joomla的乙個元件已經有縮圖功能了,但另乙個元件需要縮圖功能,還要自己再做乙個。程式不能互補,就難以技術積累,就更別說能積累出更強大的元件。而joomla中很強大的元件,都必須有非常有實力的團隊在支援。 例如kunena。不得不說kunena強大,其結構可以比得上乙個joomla,而且對joomla各個版本都有支援,也支援很多使用者管理元件。kunena能做出來可以說相當不容易,kunena的團隊必定是非常有實力的團隊,一般的開發團隊是難以比較的。

也許因為joomla程式的獨立模式問題,所以joomla第三方擴充套件都比較有英雄主義,有不少很龐大也很強大的元件出現在joomla的元件列表中,而且那些元件功能都相當完善可謂是「大而全」。要是搞論壇的話,乙個kunena就夠用了。而drupal因為互動性很好,模組要做得「大而全」就沒多少意義,所以很少出現「大而全」的模組,一般都需要與其他模組結合使用。

這一切就看似windows和linux,我們不妨把drupal看成是linux,把joomla看成是windows。linux上很多軟體都存在依賴關係,但單個軟體的體積又很小,這和drupal的module很相似。而windows的軟體安裝起來很方便,總是有很友好的ui,但體積有時卻大得驚人(例如vs.net的體積,我總是想不通這個ide為什麼這麼龐大,而且還必須安裝一大堆元件,讓我的程式列表總是很長)。

讀過了有關rails的資料,才知道「約定優於配置」是什麼意思。而rails是因為這一設計原則,使得開發流程更簡易。drupal正是以「約定優於配置」的原則設計,所以開發體驗上drupal比joomla更簡便。

說說一些開發例子,joomla的元件中總會存在views、model、controller、table等檔案,這些檔案都有意義:controller是個入口;views決定模板;model把資料整理好提供給views,table決定資料原型。這是很標準的mvc結構,當然也是相當優雅的結構。但經過大量的開發後,你會覺得一些操作很煩瑣,例如你的元件資料結構並不複雜,但還是得寫model。又或者資料總是讀不出來,查了很久才知道model沒有按規則去建立。(說實話,我每次開發乙個新元件,都是從另乙個元件抄**,不然隔段時間沒搞joomla都不知道從何開始)。

而drupal就沒有這方面的煩惱,你只需要知道「約定」,那就是系統會自動識別的命名規則。例如drupal關於文章模板的檔名為node.tpl.php,而如果你只想對id=1的文章用不同的模板,你只需要新建乙個node-1.tpl.php的檔案就可以了,模板以外的其他額外**都不用寫(同樣的功能在joomla上實現還是很麻煩的)。又例如你知道hook_cron這個鉤子是用於cronjob行為,你想在你的模組裡實現定時清除過期資料,你只需要建乙個function命為yourmodule_cron,然後寫你的清除**。

本文的結論是基於drupal6與joomla1.5的比較,兩個系統還在快速公升級中,所以這種局面不一定會維持現狀,也許joomla2.5會給我們帶來更良好的開發體驗,而這兩個都是很優秀的cms系統。在我的經驗中,drupal更適大型企業,joomla更適合中小型企業。而選擇drupal的客戶,有可能已經擁有運維相關的部門。

drupal核心函式

1,drupal static 這個函式在includes bootstrap.inc中被定義,用於持久化和快取資料 它使用的方法是,在函式內部申明兩個靜態變數,data用於儲存當前資料,default用於儲存上次資料。static data array default array 如果使用了引數 ...

最重要的7個Drupal核心模板檔案

模板名原始位置 用途html.tpl.php modules system 列印html文件的結構。包括了標記中的內容,如 script和 styles,以及標記中的三個變數 代表所有區域 page top page top區域 page bottom page bottom區域 和 page 代表...

drupal7安裝與刪除

安裝 3.cp drupal 7.8 sites default defaul.settings.php drupal 7.8 sites default settings.php 備份配置檔案 4.chmod a w drupal 7.8 sites default settings.php 給予...