關於Drupal

Drupal是一套可以讓個人或社群使用者,很容易地發表、管理並組織一個網站裡大量且多樣的內容。已經有許多個人和組織採用Drupal來建立各種不同的網站,包括:

  • 社群入口網站和討論區
  • 企業網站/企業內部入口網站
  • 個人網站或部落格
  • 嗜好網站
  • 電子商務應用
  • 資源分類目錄
  • 社交網路網站

Drupal包括以下的功能:

  • 內容管理系統
  • blog
  • 共同寫作環境
  • 討論區
  • 同儕運算網路
  • 電子報
  • 相簿
  • 檔案上傳與下載

還有更多更多!

Drupal是一套採用GPL授權的開放源碼軟體,是由數以千計的使用者和開發人員所共同維護和開發的。如果你喜歡Drupal為你所作的,請與我們一起努力,擴充並改善Drupal,以更符合你的需求。

Drupal版本:

1-1 何為內容?從Content的元素開始講起

[freemind:adg_1-1_什麼是內容.mm height=400]

附加檔案大小
檔案 adg_1-1_什麼是內容.mm3.76 KB

1-2 圖說Drupal的內容管理觀

[freemind:adg_1-2_Drupal的內容觀.mm height=500]

附加檔案大小
檔案 adg_1-2_Drupal的內容觀.mm6.02 KB

1-3 Drupal的各種分類方式

[freemind:adg_1-3_Drupal的分類方式.mm height=500]

附加檔案大小
檔案 adg_1-3_Drupal的分類方式.mm10.21 KB

1-4 Drupal的無限可能的秘訣

[freemind:adg_1-4_Drupal無限可能的秘訣.mm height=500]

附加檔案大小
檔案 adg_1-4_Drupal無限可能的秘訣.mm4.2 KB

2-1 規劃一個Drupal網站

[freemind:adg_2-1_規劃一個Drupal網站.mm height=1000]

附加檔案大小
檔案 adg_2-1_規劃一個Drupal網站.mm17.02 KB

2-2 重點提示Drupal建立網站

[freemind:adg_2-2_以Drupal建立網站的提示.mm height=750]

附加檔案大小
檔案 adg_2-2_以Drupal建立網站的提示.mm20.19 KB

3-1 Drupal開發者的思考點

要開發一個Drupal的Module,需要思考些什麼呢?下面是一些思考的脈絡,跟大家分享。
[freemind:adg_3-1_從哪裡開始.mm height=500]

附加檔案大小
檔案 adg_3-1_從哪裡開始.mm15.64 KB

3-2 開發的資源在哪裡?

[freemind:adg_3-2_找到開發的資源.mm height=500]

附加檔案大小
檔案 adg_3-2_找到開發的資源.mm6.2 KB

3-3 一個最簡單的模組範例

[freemind:adg_3-3_最簡單的模組範例.mm height=500]

附加檔案大小
檔案 adg_3-3_最簡單的模組範例.mm6.87 KB

3-4 進一步開發之前

進一步開發之前,Drupal有兩個主要的API,一個是產生網頁表單,一個是資料庫存取的API
先瞭解之後,才比較容易搭配Hook System寫出自己想要的功能。
[freemind:adg_3-4_進一步開發之前.mm height=500]

附加檔案大小
檔案 adg_3-4_進一步開發之前.mm9.72 KB

3-5 建立一個更為完整的Module

除了 hook_menu之外,還有很多的hook_system可以使用。

hook_nodeapihook_settings就是兩個重要的API。
可以下載簡單的範例程式碼

[freemind:adg_3-5_建立一個更為完整的模組.mm height=500]

3-6 hook_system的運作原理

drupal的hook system是一個與眾不同的模組架構。
Drupal允許模組本身建立一定的機制,讓其他的模組可以與之相互互動,而且不需要更動到原本的模組。

這樣的方式,讓建立一個新的模組功能變得更容易,可以方便的利用既有的模組,建立起自己新的功能。
模組的運作方式如圖:
[freemind:adg_3-7_hook_system的運作原理.mm height=500]

附加檔案大小
檔案 adg_3-7_hook_system的運作原理.mm6.18 KB

4-1 drupal theme system的流程介紹

通常在進行theme的設計時,其實並不一定會瞭解drupal對於theme system的運作流程,以至於有些時候會碰到難以解決的問題。

drupal基本處理theme的流程如下:
[freemind:adg_4-1_theme_system簡介.mm height=500]

drupal的theme system運作流程,可以了解到drupal在處理版型的時候,其實預留了許多彈性,提供使用者、theme engine、模組、和theme本身彈性變化的空間。要修改一個theme到自己想要的樣子,也可以有多種的方向切入。

附加檔案大小
檔案 adg_4-1_theme_system簡介.mm3.89 KB

4-2 phptemplate結構簡介

從drupal 4.7之後,就用phptemplate來當預設的theme engine。因為他的彈性和強大的功能,讓很多客製化變得更方便容易。

phptemplate預設會載入幾種不同的元素,這些元素就是組合成drupal頁面的各個部份。

每個元素裡頭是html和簡單的php變數,可以方便我們依據不同的區塊定義css和html的元素,配上phptemplate定義好的變數如主導覽列、logo、站名,就組合成一個drupal的基本頁面。

下面是phptemplate預定的一些基本結構
[freemind:adg_4-2_phptemplate結構簡介.mm height=500]
(紅色箭頭則是連到drupal.org的手冊,觀看*.tpl的使用方式)

附加檔案大小
檔案 adg_4-2_phptemplate結構簡介.mm4.66 KB

4-3 一個建立theme的流程

在設計theme時,最主要是要對網站呈現方式有一些想像,然後用phptemplate的規劃方式,來幫助我們規劃。

所以一個流程裡,最重要的是事前的規劃。2-1時有提到規劃好網站內容的骨幹,之後就開始可以對呈現方式的想像。依據每個部份不同的想像,頁面的版型、風格就也會有不同的呈現。

流程中,提供一個簡單的規劃結構,和一個流程:
[freemind:adg_4-3_建立theme的流程.mm height=500]

附加檔案大小
檔案 adg_4-3_建立theme的流程.mm6.98 KB

增加自定義的區塊到後台模板管理中,並能夠在page.tpl.php中使用

  1. 假設你使用的模板是「garland」,假設你想增加的區塊菜單名稱是「myregion」,列表名稱是"topmenu"
  2. 用文本編輯器或dw打開「garland」目錄下的「garland.info」文件,添加如下代碼:
  3. regions[topmenu] = myregion

  4. 到管理後台-站點構建-主題-設置本theme-不用做任何設置點擊「保存配置」-這樣才可以看到新增加的「myregion」區塊在後台的「區塊」裡出來
  5. 用文本編輯器或dw打開「garland」目錄下的「page.tpl.php」,在你想顯示的位置添加如下代碼:
  6. <?php print $topmenu ?>

  7. 好了,現在你可以到後台選擇一個已有的項目把它放置到「topmenu」區塊中,保存後去前台刷新看效果吧!

Drupal版本:

4-4 phptemplate的基礎應用

在瞭解phptemplate的基本架構之後,其實利用phptemplate有一些更多的小技巧。如果懂得些微的php,可以讓你的版型更豐富。
[freemind:adg_4-4_phptemplate基礎應用.mm height=500]

p.s. 紅色箭頭為連進官網的相關資源

附加檔案大小
檔案 adg_4-4_phptemplate基礎應用.mm5.43 KB

4-5 phptemplate進階應用

phptemplate的彈性還可以提供許多有經驗的老手做更多彈性的利用。
包含,除了左和右的側邊欄,提供更多的自訂區域,提供更多的元素(phptemplate變數),讓tpl可以操作使用,甚至可以改寫許多module提供的theme。

[freemind:adg_4-5_phptemplate進階應用.mm height=500]

附加檔案大小
檔案 adg_4-5_phptemplate進階應用.mm7.54 KB

Drupal適合你嗎?

Drupal是一個高度客製化、模組化的內容管理系統。仔細考量您所需要的特色和功能,Drupal有可能是您的最佳選擇。 在您回答Drupal是否適合您之前,我們有問題要先問您:您是哪一種類型的Drupal使用者?您的需求是什麼? 我是一個Blogger,我想要...

  • 單一使用者和多個使用者的部落格。
  • 標籤/分類系統
  • 回應功能
  • 引用功能
  • 使用範例與客製版型來自訂樣式和版面
  • 可透過他人提供的模組(也就是外掛)來支援圖片和其他媒體類型

所需技術等級:一般使用者、管理者 我正在替我的組織/公司評估Drupal,我們想要...

  • 可自訂的使用者角色和權限
  • 牢靠的安全機制
  • 延展性
  • 能夠進行設置和延伸,以符合特定的業務需求
  • 支援的基礎建設(文件、社群等等)
  • 能夠將內容分門別類
  • 額外的特色和功能

所需技術等級:評估人員、一般使用者 我是社群創辦人,我想要...

  • 讓社群成員可以彼此分享(部落格、討論區、檔案等等)
  • 讓成員可以自我組織:活動、義工、聯絡資訊、工作群組、郵寄名單
  • 可以隨著社群的茁壯也同步成長的網站(跟得上時代腳步)
  • 支援的基礎建設(文件、社群等等)
  • 可自訂的使用者角色和權限
  • 安全的網站(安全性、廣告垃圾、白爛等等)

所需技術等級:評估人員、一般使用者、管理者、網站開發人員(某種程度) 我是小公司的老闆,我想要...

  • 可以自己設置網站
  • 使用範例與客製版型來自訂樣式和版面
  • 可自訂的使用者角色和權限
  • 延展性與彈性,以符合我的業務改變的需求
  • 能夠將內容分門別類
  • 支援的基礎建設(文件、社群等等)
  • 支援電子商務,包括:
    • 購物車
    • 付費訂閱
  • 能夠進行設置和延伸,以符合特定的業務需求

所需技術等級:評估人員、一般使用者、管理者、網站開發人員(有限程度) 我替客戶建置或設計網站,我想要...

  • 採用我的版型來自訂網站外觀
  • 額外的特色和功能
  • 能夠很容易地位我的客戶提供支援
  • 連結設計師和開發人員社群

所需技術等級:評估人員、管理者、網站開發人員(某種程度) 我是一個程式設計師,我需要...

  • 一個可靠的、設計良好的、模組化的系統,讓我可以客製化和進行延伸
  • 文件充足的API
  • 系統和架構文件,以及程式撰寫的準則
  • 連結設計師和開發人員社群
  • 豐富的特色

所需技術等級:管理者、程式設計師 您知道您想要成為哪一種類型的Drupal使用者嗎?如果您知道,請看看下面的技術等級說明,以瞭解您的Drupal使用者類型所可能需要的項目。

  • 評估人員:熟悉網站術語和概念。
  • 一般使用者:熟悉瀏覽網頁、點選連結、送出表單、選擇項目等。
  • 管理者:管理角色、選擇版型、分類內容、設定模組、安裝與更新軟體和資料庫、安裝安全性修正。
  • 網站設計師/開發人員:安裝軟體、設計樣式和版面(使用CSS或一點點php)、建置並導入網站、評估模組適用性、熟悉LAMP。
  • 程式設計師:php程式開發、管理資料庫、透過定義良好的API開發程式、設計資料庫物件、評估現有解決方案並安裝修正程式、與其他開發人員協同工作

現在,您已經知道您可以成為哪一種類型的Drupal使用者,接下來,您應該花一點時間,瞭解Drupal。 在案例研究部份,將檢視Drupal常見的應用方式,並針對所提到的運用方式展示一些實際採用Drupal的網站。這裡也會列出其他許多採用Drupal的網站。 在功能總覽部份,我們會介紹Drupal裡最重要以及最常被使用的功能。 關於使用Drupal來架設網站、而非從頭撰寫一套網站的優點,則會在自行開發vs.使用Drupal這篇文章裡進行討論。

Drupal網站範例

花點時間瀏覽一下這些Drupal網站,它們展現了Drupal的多樣面貌。這些網站展示了Drupal網站可以如何地建置,以符合各個不同的功能和需求,同時仍保有設計感與動感。

對於不同使用需求的 Drupal 入門玩家,你會給些什麼建議?

我不太確定這是不是一篇回娘家文似的討論文章,不過我還是決定試著發表出來。
前幾天在我自己的小站上頭,有一位 Zerro 的網友留了一段話:

Drake,看過一些你在DTW上的文章,讓我這樣的菜鳥非常容易搞懂。
你寫的文章非常到位,很喜歡,我個人希望你能介紹幾個“DRUPAL網站案例的構建”過程文章。并且給予一定的提示幫助。

比如:目前大多數的網站大致分為幾類:

1:新聞模式的
2:blog日志模式的
3:圖片/相冊模式的(也許是模板展示之類的)
4:論壇/BBS/FORUM
5:購物、商品展示之類的(這一累類似商業網站)

用到的模組,和難點,以及實現同一個展示/外觀效果使用的不同方式、不同方式的利弊共用等。

親自動手實驗室學習的最基礎,但像我等初學乍練的新手,往往是不知道從何處入手,所以提了這個要求,希望 Drake有空的時候考慮一下,為我們好好講講。

先謝謝哦!

廣邀大家來一起替他(或更多人)給些建議 :)

範例研究 - 不同類型的網站與範例連結

Drupal可以符合幾種不同類型的網站的需求:

社群入口網站
如果你想要一個是由使用者來提供內容的網站,Drupal可以滿足你的需求。投稿的作品可以開放給網友進行投票,得票數高的文章將可以出現在首頁上。不好的作品和回應在獲得一定的負面評分後,會自動地隱藏起來。
範例網站:Debian Planet | Kerneltrap

個人網站
Drupal很適合只想要架設一個個人網站的使用者,你可以撰寫部落格、張貼照片,或是收集一些網站連結。
範例網站:urlgreyhot | Langemarks Cafe

嗜好網站
Drupal也很適合用來讓使用者分享他們對於某一主題的專精與熱衷。
範例網站:ia/ | Dirtbike

企業內部/企業網站
企業可以採用Drupal來建置他們的內部與外部網站。Drupal很適合這些用途,因為它的權限系統很有彈性,而且以網站為基礎的出版方式非常地便利。花不了多久時間,你的網站管理人員就能把企業網站做好。
範例網站:Sudden Thoughts | Tipic

資源分類目錄
如果你想要一個特定主題的分類目錄,Drupal也可以滿足你。使用者可以自行註冊並提供資料,編輯則能過濾這些資料。
範例網站:Entomology Index

國際化網站
當你開始使用Drupal,你就加入了一個大型的使用者與開發者的跨國性社群。要感謝Drupal的本土化功能,有許多Drupal網站是採用各種不同的語言所建置的。
範例網站:PuntBarra | cialog

教育網站
Drupal可以用來建立動態的學習社群,作為面對面教學的補充方式,或是作為遠距教育課程的平台。教育機構也可以善用其互動功能,以及提供公開內容、僅供會員瀏覽的資訊、或是會員訂閱管理等功能。
範例網站:ENGL 420S | WPA

範例檢視與分析

以下是與Drupal相關的、不同軟體和平台的檢視和分析。

為telecentre.org的分散式網路選擇平台

Telecentre.org替其位在世界各地的網站規劃一個分散式的網路。這份文件勾勒出選擇telecentre.org的網站平台時所依循的過程;我們最後的選擇正是Drupal。

要瞭解特定的需求和引領這過程的整體網站策略,請看看個別的telecentre.org網站上的策略文件。整體的願景是一個可能是在不同的平台上運作的網站網絡,包括運行在我們以Drupal為基礎的「一站支援網路」上數量不斷成長的網站。

採用Drupal的網站列表

這裡將列出採用Drupal的網站(以繁體中文為主,歡迎自主登錄)。

教育網路中心課程大綱

上週末去中部某教育網路中心,講了一遍 Drupal 的簡介。學校應用我真是不太熟,不過在準備的過程中,倒是看到一些學校的範例很不錯 :)

成功故事

這裡會介紹Drupal如何能夠解決你的問題的真實案例。也歡迎你與我們分享你的Drupal成功經驗。

Popular Science Magazine架站案例分享

Popular Science Magazine screenshot
這篇寫的太好了,讓我不得不花上睡覺時間來分享一下! (原文: http://drupal.org/node/233090 )

PSM是一個線上雜誌,因為網站經營了很久,所以擁有固定的讀者,高流量、高造訪率,也一定有廣告版位等著,有分散各處的編輯,也因為long term的考量,打算用open source陣營的產品已經很久了。在這樣的背景之下,他們選上了Drupal,但整個開發過程中也碰到了一些難題~ 這個分享就是很好的一個case study,說明open source怎麼幫助產品,而需要怎樣的know how/work才有可能達成。

內容的規劃應該如何做起?

因此,PCS找來的開發團隊pingVision,規劃了7種content type來達成網站的整合
他們的概念也是由Drupal的核心概念出發,把各種規劃都整合進node和CCK

  1. Articles(文章)
  2. Current Issue(消息)
  3. Featured Tout(特輯)
  4. Images(圖片)
  5. Photo Gallery(相簿)
  6. User Video(影片張貼)

因此可以注意到,圖片和相簿都是個別的node,可以透過node reference來整合
而articles裡頭也有reference到圖片的欄位,可以把文章的標題image做起
而Current Issue則規格化了最新消息的美化版本,善用既有的欄位工具,來讓編輯輕易產生好的最新消息
最後Featured Tout則是為了他們貢獻的node carousel module,專門用來產生Jquery滑動圖片的效果
讓廣告或其他想要提昇的特輯,可以吸引使用者的目光

這些難不難呢?包含gallery的頁面、image的頁面,以及Current Issue的layout,都需要花功夫
但畢竟Drupal已經把後台整理好了,而pingVision的開發團隊真的妥當了利用這樣的概念。

因此整個線上雜誌的首頁,就可以安然操縱在編輯的手中了,有圖為證:
首頁規劃

資料轉移

在以往的經營,他們是整合許多發文管道,主要有Vignette 7 CMS和Typepad,因此轉移的複雜性就多了很多。
在轉移資料的過程裡,他們用了MySQL Migration Toolkit從Oracle把資料轉移到Mysql,再寫模組來跑cron把舊db的資料撈出來,餵進新的db中,並且寫了script來做圖片轉移的動作,整個從1.66Gb的Oracle資料庫中,轉移整整花上了兩天才完成所有data的import。因此轉移資料並不是一件容易,可以輕易testing的事情。

整個轉移中,非常專業的部份是就系統的URL如何Redirect到新的網站中,這是SEO的關鍵點。他們也考量於此,把舊的URL/Article id mapping到新的Drupal文章,而Google也因此在短短的時間內,可以把所有對PSM的index更新妥當,不會有死連結,更有好的SEO,維持廣告和流量。

提昇效率

動態網站的痛,一直以來就是效率問題。要不就花大把的銀子砸機器,database用來做多個資料庫,要不就要在規劃時一切都設想週到。PSM是一個很好的例子,一開始就打算買機器做memory cache,並且用了Drupal的Memcached模組,讓Drupal優秀的cache可以發揮作用,也是一個真正可scale的long term solution。

這樣是否真的有改善?舉例而言,page loading的時候需要做700 網址別名(path alias)的資料庫讀取,因為memcache的幫助,將這些結果cache至memory中,讓網站的效能可以到每秒60-70 request。
(譯著:純靜態網頁的效能可以是每秒3000 requet以上,drupal未開任何cache的效能可能每秒只有0.5-1個request,甚至更低。)

部份翻譯自: Popular Science Magazine (PopSci.com) Case Study
原文還有更詳細的module listing

譯者小結

可以由這個case探看怎麼善用一個好的Open Source工具當作基礎,用Drupal來實現媲美大型報業網站水準的雜誌。
然而能夠成功的關鍵點,還是在於網站經營者的具體想像,如何規格化、模組化(化繁為簡),以及開發團隊對於專案的認識度、背後的技術基礎、Drupal熟悉度、Open Source社群的溝通度(如何有效的取得資源、有效回饋),才能造就一個好的case,好的long term solution。

功能概觀

    一般功能
  • 共同寫作:
    Drupal獨特的共筆功能,讓你可以發起一項需要有人來撰寫的專案或「手冊」,並授權其他使用者一起來貢獻內容。
  • 友善網址:
    Drupal利用Apache的mod_rewrite功能,讓你可以自訂網址,對於使用者和搜尋引擎來說都很方便。
  • 模組:
    Drupal社群開發了許多模組,提供多樣化的功能,例如分類呈現、jabber認證、私人訊息、書籤等等。
  • 線上說明:
    就像許多開放源碼專案一樣,我們不能說我們的線上說明是完美無缺的,但是已經建立了一套扎實的線上說明系統,提供核心的說明內容。
  • 開放源碼:
    Drupal的原始碼是透過GNU General Public License(GPL)條款免費提供。Drupal不像私有的部落格或內容管理系統,可以依據需求完全加以延伸或客製化。
  • 個人化:
    Drupal的核心裡就預設了完整的個人化環境。網站的內容和呈現都可以依據使用者所定義的方式進行個人化設定。
  • 以角色為基礎的權限系統:
    Drupal的管理者不需要辛苦地為每一個使用者設定權限。他們可以把權限設定給某些角色,並把使用者分配到角色的群組裡。
  • 搜尋:
    Drupal裡的所有內容都可以建立索引並進行搜尋。
    使用者管理
  • 使用者認證:
    使用者可以在本地端進行註冊與認證,或是使用外部認證來源,例如Jabber、Blogger、LiveJournal或另一個Drupal網站。對於企業內部網站的使用來說,Drupal還可以與LDAP伺服器進行整合。
    內容管理
  • 投票:
    Drupal內建了投票模組,可以讓管理者和/或使用者發起投票,並在不同的頁面裡呈現出來。
  • 版型:
    Drupal的版型系統把內容與外觀分離出來,讓你可以控制你的Drupal網站的外觀。版型是以標準的HTML和PHP撰寫的,這表示你不需要去學習特定的版型語言。
  • 主題式回應:
    Drupal提供了強大的主題式回應系統,可以讓網友針對所發佈的內容進行討論。回應可以是階層式,就像是新聞群組或討論區那樣。
  • 版本控制:
    Drupal的版本控制系統可以追蹤內容更新的詳細資訊,包括了修改者、修改的內容、修改的日期和時間等等。版本控制的功能還提供了回應紀錄,並讓你可以把內容回復到早期的版本。
    部落格
  • 支援Blogger API:
    Blogger API讓你可以使用多種不同的工具來更新你的Drupal網站。這包括了非採用網站瀏覽器為基礎的工具軟體,可提供更豐富的編輯環境。
  • 內容串連:
    Drupal會把你的網站內容以RDF/RSS的格式匯出,讓其他人可以使用。這讓任何使用像是NetNewsWire或Radio UserLand這種「新聞匯聚工具」的人,都可以方便地從他們的電腦上瀏覽你的Drupal網站。
  • 新聞匯聚:
    Drupal內建了一個功能強大的新聞匯聚工具,可以用來閱讀並紀錄其他網站的新聞資訊。這個新聞匯聚工具會將文章暫存在你的MySQL資料庫裡,而這個暫存的期限是使用者可以設定的。
    附註:當你有幾天沒有上網時,這功能可以幫助你不會漏失資訊。
  • 永久網址:
    Drupal裡的所有內容都會有一個永久的網址連結,不會出現連結錯誤或找不到網頁的狀況。
    平台
  • Apache或IIS,支援Unix / Linux / BSD / Solaris / Windows / Mac OS X:
    Drupal從一開始的設計就是要支援多種平台。你不僅可以在Apache或Microsoft IIS上使用,我們也可以在Linux、BSD、Solaris、Windows和Mac OS X等多種平台上執行Drupal。
  • 資料庫:
    許多使用者採用MySQL來執行Drupal,但我們知道MySQL並非每一個人的選擇。Drupal是建立在資料擷取層之上,以你可以使用MySQL和PostgreSQL來執行Drupal。其他SQL資料庫也能夠被支援,只需要撰寫一個有14組功能的資料庫後端程式,並建立相對應的SQL資料庫架構即可。
  • 多語系:
    Drupal的設計是要符合國際性的使用需求,提供一套完整的架構,可以建立多語系的網站、部落格、內容管理系統或社群應用。所有文字都可以使用一個圖形使用介面進行翻譯,或是匯入現有的翻譯資料,或是與其他翻譯工具整合運用,例如GNU gettext。
    管理分析
  • 分析、追蹤和統計:
    Drupal可以列印出以瀏覽器為基礎的報表,包含了關於referral、熱門內容、訪客瀏覽模式等等。
  • 紀錄與報告:
    所有重要的動作與系統事件,都會被紀錄在事件日誌裡,讓系統管理者可以在事後進行檢視。
  • 以瀏覽器為基礎的管理方式:
    Drupal可以完全使用瀏覽器來進行管理,讓你可以從世界上任何角落來進行存取,不需要在你的電腦上安裝額外的軟體。
    社群功能
  • 討論區:
    Drupal內建完整的討論區功能,可以建立充滿活力的、動態的社群網站。
    效能與延展性
  • 快取:
    減少資料庫存取的快取機制,可以提昇網站效能,並減少伺服器的負荷。你不僅可以在網站負荷量大的時候即時進行快取調整,Drupal也成功地通過「slashdotting」的考驗,並且表現良好。

典型的Drupal應用方式

藉由啟用與設定個別的模組,管理者可以設計出一個獨特的網站,例如一個結合了知識管理、網站發佈和社群互動的網站。所以你最好能多瞭解這許多的可能性,以下就是以常見的網站平台特性來做區分的功能列表:

  • 內容管理
    透過一個簡易的、以瀏覽器為基礎的使用介面,會員可以發佈許多不同類型的內容:報導、部落格、投票、圖片、討論區、下載等等。管理者可以從多種版型之中進行選擇,或是建立自己的版型,讓網站擁有獨一無二的外觀。彈性的分類系統,可以針對大部份的內容類型進行階層式的分類、文章索引和多重分類。內容的存取則是透過管理者所定義的使用權限角色。網站頁面可以依據模組類別或分類內容來呈現,同時還擁有各自的RSS。使用者也可以使用關鍵字來尋整個網站。
  • 部落格
    只要安裝一套Drupal,就可以設定為一個個人部落格網站,或是多個個人部落格。Drupal支援Blogger API,為每一個個別的部落格提供RSS,並可以設定為在發表新文章時,馬上通知部落格目錄服務,例如blo.gs和weblogs.com。
  • 討論社群
    Drupal網站可以成為類似Slashdot的新聞網站,並且/或是作為一個傳統的討論區。多數內容類型裡都有的回應區塊,讓會員很容易就可以討論新文章。管理者可以設定是否不需要經過審核就能發表內容和回應,或是必須經過管理者審核或是社群共同審核。社群可以訂閱Drupal內建的資訊匯聚工具,討論其他網站的內容。
  • 協同工作
    用來管理Drupal的建構的project模組,很適合用來支援其他的開放源碼軟體專案。類似wiki的共同寫作book模組,則包括了版本控制功能,讓一個團體可以建立、修改並維護任何類型的文件。

想要更完整的功能列表,請參考我們的功能概觀。想要參考實際的應用範例,可以瀏覽範例研究裡特別介紹的網站,或是看看一些採用Drupal的網站

自行開發vs.使用Drupal

有時你們可能會考慮自行開發自己的系統,而不使用Drupal。Drupal社群非常希望你的加入,因此我們會從你的觀點來呈現一些使用Drupal的好處,而不是自行開發。我們鼓勵你在動手前,思考下列項目:

採用Drupal,有趣且富教育意義

當你還在努力掙扎於讓網站符合你的需求、處在使用單純的程式語言的低階環境裡,Drupal卻有更好的方式。如果你使用Drupal,你會經歷並學習到一個被證明為強大且受歡迎的系統的內部運作方式。這對於你未來的專案,會很有幫助。

當撰寫系統架構時,處理一些無關緊要的細節常會令人感到挫折。有了Drupal,架構已經建好,你可以專注在專案裡的「牛肉」。有了Drupal,你可以減少完成工作所需的煎熬。

Drupal的使用者和開發人員基礎

有數以萬計的網站在使用Drupal,drupal.org上常常同時有超過700個使用者在瀏覽資訊。這讓你在採用Drupal時,擁有以下優勢:

  • 可以滿足廣泛需求的模組
    當你在建置你的網站時,可能會出現你原本沒有想到的功能需求。當Drupal的使用者碰到需求出現時,常常會有人撰寫新模組來滿足需求。在大部分的例子裡,這些模組都是其他使用者貢獻的,所以如果你採用Drupal,你就有機會在模組下載區域找到它們,很容易就可以安裝到系統裡開始使用。此外,你也可以修改這些模組,以更符合你的需求,因為它們都是開放源碼。
  • 容易取得協助
    如之前所提,有許多人活躍在drupal.org。你可以在討論區裡提出你的問題,或是進行搜尋,通常都可以找到一些人建議的解決辦法。如果你是自己搞,你就沒有這種大型社群的支援優勢,因為他們不知道你是怎麼做的。
  • 測試完整的平台
    當系統變得愈複雜,愈有可能發生錯誤或臭蟲,最終會變得難以處理,不是少數幾個人就可以預測所有的問題。你不能依賴你的網站訪客來回報錯誤,因為他們不會告訴你問題在哪,他們只會一去不返。

    每一個安裝了Drupal的網站,都有一個監視模組(watchdog)。這個模組會紀錄錯誤,並在管理者進入管理介面時回報給管理者。此外,對於Drupal系統的使用者來說,網站能如預期所想的方式運作,是非常重要的一件事。因此使用者會把錯誤回報給Drupal的維護人員和模組開發者。為了使這個過程變得簡易順暢,Drupal的維護人員已經建立了一套系統,可以追蹤特殊狀況,並將問題回報給有能力解決的人。

你可以用Drupal建立很酷的網站

我收集了一些範例網站,可以用來支持我的說法。請注意,他們都是很不一樣的網站哦!

想要看更多的例子,可以在範例研究Drupal網站列表裡找到。

Drupal很有彈性

通常選擇自行開發系統的一個重要原因,是因為這樣可以精確地符合自己的需求。然而,Drupal本來就是設計為可以符合各種廣泛的需求,其中一個重要功能,就是彈性。事實上,你是很有機會可以採用Drupal來達成你的目標的。除了前面已經提過的模組、以及可以修改模組以符合你的需求之外,你也很容易就可以設計自己的模組。通常這是透過在檔案裡設計一些導入了某些hooks的函式。以下的函式導入了help hook,可以讓Drupal的核心程式和其他模組來呼叫。

<?php
function mymodule_help($section) {
switch($section) {
case 'admin/help#block':
return 'My module will help you get laid';
break;
}
}
?>

這種讓模組與Drupal核心進行互動的方式,已經被證明是非常好的作法。藉由使用hooks,模組可以彼此互動,並利用Drupal的基礎元件,例如節點、分類、管理和使用者系統。

有了Drupal,你可以替未來打算

Drupal已經誕生超過五年了,並且持續地在吸引有興趣且活躍的開發人員。有了這樣良好的紀錄,你可以放心地相信它會繼續成長茁壯。持續不斷的開發,對於網站的建置與規劃而言是很重要的。對於「客製化的程式」,你必須知道是否有人提供適當的文件或回應,才不會導致「維護惡夢」。

網際網路上充滿著關於溝通的想法和作法,Drupal把重點放在與未來一同成長,提供相容於標準的解決方案。以RSS為例,Drupal 4.6版就升級到RSS 2.0的標準。

我們不知道未來的網路標準或想法會是如何,一個客製化網站若要隨之更新,你可能得重寫所有的程式碼。有了Drupal,你可以確定它的彈性和模組化功能,足以隨之成長,並很容易地就能做出改變。

資訊架構師的Drupal:設定綜覽

資訊架構(Information Architecture, I.A.)是結構化資訊(知識或資料)的實做。常根據其在使用者互動或大型資料庫裡的脈絡來進行結構化。
-Wikipedia.com

Drupal提供了一些方法將資訊進行結構化,包括版型、導覽、樣式和應用系統。它提供了一個框架,可以透過可延伸的應用系統(也就是模組),將資訊視為內容來進行管理,模組提供了使用者與內容互動的機會,例如志工管理應用系統。每一個模組都提供一個可設定的管理介面,以客製化此應用系統的行為。每一個模組的權限,也可以針對每個使用者角色來進行設定。

目前(2006/2)有大約370個模組可供Drupal 4.6版來使用,不需要特別的程式設計,就可以進行高度的客製化。你可以用CSS、PHP和AJAX來進行完整的客製化。儘管每個網站有其自己的複雜性,不過一個採用修改過版型、設定了使用者權限與模組的客製化網站,可以在幾個小時內建置完成。

排版
Drupal以三種方式支援內容的排版:區塊、邊欄和選單。4.7版有五種預設的區塊:左、右、頁首、頁尾和內容。這還可以延伸成更多區域。你可以修改Drupal的版型,使用最普遍的變動欄寬的三欄版型,修改成各種變化的排版方式。你可以使用PHP和CSS來調整Drupal的佈景主題系統。Drupal也有一個可設定的選單系統,讓你可以在區塊裡提供導覽選單。

Drupal有一個還在發展中的線框(wireframe)模組,可以讓資訊架構師使用HTML產生使用介面的元件,然後在網站上設定這些元件,以進行使用者測試。這個線框佈景樣式是可以選擇的,屬於CivicSpace版型的一部分。
導覽
Drupal支援多種導覽方式,包括全局、本地、脈絡和情境導覽。Drupal的版型系統可以設定主要和次要導覽,它們是獨立於其他導覽,在版型管理裡進行設定。

以版型為依據的導覽,常常作為全局導覽,不論是放在頁首、標籤或頁尾裡。本地導覽常會動態地被運用在分類、選單裡的子連結或動態區塊裡。脈絡導覽,例如現在位置(breadcrumb),則可以顯示目前使用者位在網站的什麼地方,也常在版型裡出現。情境導覽則是利用所出現的訊息,用來指出操作錯誤或成功。常見的情境導覽例子是使用者表單裡面的說明導覽資訊。

樣式
Drupal隨付幾套預設的佈景主題,可以讓網站進行設定,並可讓使用者來選擇。Drupal的版型範本,利用PHP來協助Drupal和其模組裡的xHTML的樣式化。階層式樣式表被用來調整顏色、色系和排版格式。佈景主題是可客製化的,可以針對網站位置、使用者狀態或內容類型設計特殊的樣式。圖形和影像可以坎入到佈景主題或內容裡。
分類
資訊架構裡的架構資訊中最主要的一個來源,就是透過使用Drupal的分類功能,以及強化了分類功能的20個以上的模組。Drupal允許你管理分類(在這裡稱為taxonomy),可以使用標籤、無階層式、階層式或多層次式的分類詞彙。資訊可以透過內容分類來進行結構化,可以在內容裡加上語意資訊。資訊架構師和網站開發人員常常會使用分類導覽的方式,讓Drupal可以符合他們的組織對於資訊流或營運模式的需求。

應用系統
Drupal大約有570個應用系統,也就是所謂的模組,而4.6版大約有360個模組可供使用。這些模組可以被區分為以下幾種類型:

  • 第三方產品整合
  • 管理
  • 分類
  • 社群
  • 內容
  • 商用廣告
  • 評估與評分
  • 活動
  • 檔案管理
  • 過濾器/編輯器
  • 圖形使用介面/內容呈現
  • 匯入/匯出
  • 地理位置
  • 電子郵件
  • 多媒體
  • 安全性
  • 資訊串連
  • 版型
  • 使用者存取與認證
  • 工具
  • 其他

本頁內容是由CivicSpace Labs的Kieran Lal所撰寫,如果你想要將資訊架構方面的專長提供給Drupal,或是對本頁內容有意見,請聯絡Kieran Lal

專業顧問的Drupal:客戶常見的需求綜覽

當要指定專案的需求時,大多數客戶都會詢問許多同樣的問題,不論該專案是一個電子商務網站或是一個社交網路。以下所列出的是大多數專案所關心的項目,以及本手冊裡其他部份所提供的相關資訊。

注意:本文所列出的是主題,而非該項主題的教學指引。例如,「延展性:案例研究」而非「延展性:如何調校伺服性」。有些教學連結暫時還存在,但以後會移除。

Platform Support

Scalability

Security & Access Control

Administration Overhead
Auditing

Disaster Recovery

Maintenance

  • Upgrade tutorial
  • Do we have any info on dates of previous releases? It would be good to be able to give clients a very rough idea of Drupal maintenance cycles

Documentation

  • Drupal Handbooks
  • Would be better for client if a "Using Drupal" handbook was available, none of the handbooks suits an organisation where a consultant takes care of all technical tasks.

Accessibility Legal Compliance

Professional support

Interoperability

為您的模組寫個.info檔

原文 Writing .info files (Drupal 6.x)

一個.info檔案提供一些與您的模組有關的訊息給Drupal. 這個檔案最主要的作用是提供給模組管理系統顯示用途也可以提供啟用與禁用的管理,以下是一個.info的例子:

; $Id$ name = Example module description = "Gives an example of a module." core = 6.x package = Views dependencies[] = views dependencies[] = panels

 

.info的檔案名稱必須與.module的檔案名稱相同而且要放在相同的資料夾中.例如:如果您的模組名稱為example.module那info的檔案名稱就應該是example.info.

這個檔案是一個標準的.ini 格式, 這個格式內的每一項用等號將key與value連接起來,您也可以用引號(“”)將value包起來, 而引號內的內容是可以換行的

description = "Fred's crazy, crazy module; use with care!"

.info檔案中可以包含一些註釋. 註釋的內容是放在分號(;)之後的, 而且註釋換行後需要在新的一行的最前端加上分號,最典型的例子就是放在一個.info檔案的最頂端,提供CVS ID的註釋:

; $Id$

.info 可以有以下的欄位:

名稱(必須)
name (Required)

顯示您的模組名稱. 這個名稱的寫法必須符合Drupal的大寫標準: 只有第一個字的第一個字母可以大寫("Example module", 不是 "example module" 或 "Example Module"). 於名稱中是允許有空白字.

name = “Forum”;

模組說明(必須)
description (Required)

簡短,最好是只有一行的描述,這描述將會在管理頁面中告訴管理者這個模組的作用. 請記得, 過長的描述將很難顯示於這一頁中,因此,請精簡說明,這個欄位長度限制為255個字元.

description = “Enables threaded discussions about general topics.”

核心版本(必須)
core (Required)

您的模組支持Drupal核心的版本. 支持Drupal 6 應該寫成 6.x, 支持Drupal 7 應該是 7.x, 等等. 請注意,模組不能指定確切的子版本號,換言之,支持6.8時,應該寫成6.x而不是6.8.

core = 6.x

需要其他模組(可選)
dependencies (Optional)

您的模組需要其他的模組時, 以一個陣列的方式表示. 如果這些模組不存在,您的模組也將不能啟動. 再如果這些模組存在但是沒有啟動,系統將列示需要啟動相關模組進而驅使管理去啟動或放棄.

每個dependency的字串值必須是模組的檔案名稱(不含“.module”) 而且必須以如下所示以小寫的方式書寫,空白字在這裡是不允許的

dependencies[] = taxonomy dependencies[] = comment

模組所屬類別 (可選)
package (Optional)

如果您的模組來自於其他模組或是專門用於其他模組, 請在這裡輸入組(package)的名稱. 如果您留下空白, 系統將自動將您的模組歸類為其他(other).一般來說,這個欄位只適合大的多模組封裝,或者是其他模組的擴充, 例如: CCK, Views, E-Commerce, Organic Groups以及 類似的. 所有其他的模組應該在這裡留下空白. 準則上來說,有四個或是更多的模組具有相關性 (或是全部針對一個模組), 此時是建立一個新的群組的好時機. 不然,最好還是不要.

如果字定義一個新的模組群, package字串是用來將所有的模組們聚集在一起, 並且將他們在模組管理上顯示出來; 那個字串也因此會顯示在頭部, 而模組部份會顯示在其下,而且在所有的.info中必須保持一致(拼字與大小寫). 這個字串不能使用任何標點符號而且應該遵循剛剛在Node說過的-Drupal 大寫標準.

package = Views 給package 欄位的建議:

  • Audio
  • Bot
  • CCK
  • Chat
  • E-Commercev
  • Event
  • Feed parser
  • Organic groups
  • Station
  • Video
  • Views
  • Voting (if it uses/requires VotingAPI)
  • Location

有個例外,那就是"Development", 這個主要是用在與程式開發工具相關的模組 (Devel, Coder, Module Builder...).

php版本 (可選)
php (Optional)

就好像6.x, 模組與版型或許需要指定最小的PHP版本. 他們可以透過以下的做法來定義:

php = 5.1

以上的例子指出, 這麼模組/版型將不能在PHP 5.1以前的版本工作. 如果模組使用新版本PHP的一些特性(增進 XML 處理, 物件迭代器, JSON, 等),這個宣告是很有用的.如果沒有指定, 將會與Drupal核心所指定要求版本相同. 一般模組都是不需要指定PHP版本的, 除非她們需要PHP的版本比核心要求的更新. 參閱PHP 手冊以了解PHP版本更多訊息.

版本 (不鼓勵)
version (Discouraged)

當新版本以及原始代碼已經發布,這個版本號的字串由drupal.org所提供, 然而,如果您的模組沒有放在drupal.org, 您可以為您的模組編上您所想要的版本號..

自.info檔登入CVS沒有給定版本前, 使用者直接從CVS取得她們的模組將不會有版本字串.鼓勵這些使用者使用CVS來部署模組以取得準確的版本字串提供給admin/build/modules頁,進而能讓在目錄下的模組直接在CVS下確認..

專案(不鼓勵, 僅適合封裝時使用)
project (Discouraged, packaging use only)

模組維護者不應該使用這個欄位. 在drupal.org中的封裝程式,將自動提供一個字串,以識別的這個模組是來自哪個專案. 這個主要是提供給模組升級狀態使用,因此Drupal安裝器可以監控那些已經安裝好的模組版本,並且當有新的版本可用時通知管理. 進一步資料,請參考drupal_parse_info_file() .

Drupal版本:

背景

歷史

以下譯文轉載自Jimmy's drupal的歷史
==
事情是這樣的,在ADSL依然很貴的2000年,就讀University of Antwerp(比利時)的兩位學生 Dries Buytaert 和 Hans Snijder 用無線網路分享了自己學術網路的頻寬(因為學網比較便宜)。這樣其實便是彼此分享和討論很好的開始。
因此,Dries有了一些靈感,著手設計了一個簡單的內部網路討論板,讓朋友們可以上來留些言,彼此交流交流(就像咱們的BBS般)。

在這之前,其實一直都沒有為這個程式命名,直到 Dries畢業了之後,在板上活躍的社群成員們,便想將這樣的東西從內部網路搬到internet上,讓他們可以持續保持聯繫,而不至於因畢業而斷了聯絡。因此,Dries在註冊domain name的時候,找了一個適合他們這樣性質的名稱--dorp.org--來當他們未來在internet上聯繫的網址。dorp為荷蘭語的village,其實很符合他們這樣一個小小community網站的性質。

當dorp.org上線之後,在上面發表文章的作者們也開始討論不同的話題,像是投票(moderation其實是指一種調節機制,在drupal上用來當作文章評分上線的過程)、rating、文章訂閱和分散式的註冊系統(drupal目前也支援一個id通用於各種drupal站)。dorp.org慢慢演變成一種個人實驗的環境,而上面許許多多的想法和討論,終被在dorp.org站上一點一點實現。

2001年的1月,Dries打算將他的試驗成果分享出來,用wiki(GPL,GPL)的方式釋出軟體,讓更多人可以延伸、創造出不同的風貌。而drupal這樣的名稱,其實發音為”droo-puhl”,他是荷蘭語druppel,也就是英語的drop,小水滴之意。
==

想知道更多關於Drupal的歷史,可參考2006年在溫哥華舉辦的Drupalcon裡的影片

Druplicon (Drupal的logo)

這個邪惡小水滴logo圖形的產生,也有一段歷史呢...

在Drupal正式成為軟體之後,當然面臨到要選擇logo的問題了,顯而易見的,這個logo一定會跟些水滴的意象,或是水的意象有關聯囉(drop英文是水滴的意思,drupal是荷蘭語的水滴)。

剛開始的想法其實很簡單,一個圓圈圈水滴,就像液態化的字母"O"一樣。

然而當drupal的社群越來越龐大,就有人提出點子說要把水滴加上臉當作logo,Steven Wittens (UnConeD)因此見立了一個3D的水滴。但是呢,這個點子很難真正成為Drupal,因為3D的圖形檔案有很難用於輸出、不容易編輯...等的缺點。

過了一段時間,logo的議題又再度被討論一次時,Kristjan Jansen (Kika)提出了idea,將兩個水滴倒一邊成為一個無限記號,然後放進了水滴的圈圈中,就變成了個臉啦。經由Steven Wittens加工過後,Druplicon真正成型了: 一個很性格的水滴,並且長著無限記號當成的眼睛,加上圓圓的鼻子,和一個搗蛋的微笑(譯著:我個人覺得這是經典)。

原著者說,他喜歡那個無限記號的眼睛,表示Drupal提供了無限的可能性 :)

==========================================
看看更多druplicon的成品 http://drupal.org/node/9068
==========================================
原文翻譯自
http://drupal.org/druplicon

使命

藉由建立在相關標準和開放原始碼技術之上,Drupal支援並強化了網際網路作為一個媒介的可能性。這個網路媒介,讓世界各地不同的個人和團體,都可以一起生產、討論、分享資訊和想法。Drupal的主要興趣和重點放在社群與協同運作,它的彈性讓線上資訊系統和社群可以共同生產內容。

原則

  • 協同運作
    Drupal支援開放的、協同運作的資訊分享系統和方式(包括像是社群評鑑文章等系統)
  • 以標準為基礎
    Drupal支援已經現有的和新興的標準。特別鎖定的標準包括了XHTML和CSS。
  • 開放源碼
    Drupal是以自由軟體協同開發的開放源碼哲學為基礎,並以GPL進行授權。Drupal本身就是開放源碼,也以其他開放源碼計畫為基礎,並且也支援其他開放源碼計畫。特別的是,Drupal是用開放源碼的程式語言PHP所撰寫的,並支援主要的開放源碼資料庫MySQL和Postgresql。
  • 優秀的程式撰寫Quality coding。
    高品質、精緻、文件豐富的程式碼,其優先性遠超過的草率的功能開發。
  • 使用容易
    Drupal的目標是對於開發人員、管理者和使用者都能達成高標準的使用性。
  • 模組化和延展性
    Drupal想要提供一個簡潔但功能強大的核心系統,可以快速地透過客製化的模組來強化功能。
  • 低資源需求
    為了確保絕佳的效能,Drupal特別注重程式的效能(例如減少資料庫查詢)。Drupal的伺服器軟體需求也盡量降低,以期能廣泛運用。Drupal應能在採用Apache、PHP和MySQL或Postgresql的伺服器上完整運作。

使用性目的

對於開發人員來說,Drupal的目標是要讓開發系統可以成為:

  • 擁有充足工具的hook系統,提供現成的一些作法,與核心元件互動,完成大多數可預見的程式撰寫工作。

對於管理者來說,Drupal想要提供的解決方案是:

  • 容易安裝與設定,對於特定的技術需求降到最低。
  • 直覺且能自我解釋,讓管理者可以輕易地找到所需的設定項目。
  • 高彈性,讓網站管理者可以展現他們想要呈現的使用介面。

對於使用者來說,Drupal的使用介面裡的每一個部份都應該:

  • 直覺且能自我解釋,讓使用者不需要甚麼經驗,就能夠輕易上手。
  • 井然有序,讓使用者不需要去努力分辨哪些是重要或不重要的。

簡報與報導

  • Intranet Journal - Drupal: 功能大又免費,但是需要組裝一下:「Drupal提供的是一個具延展性的架構,對於大型的企業內網路來說特別有用處,可以讓你逐步擴充並改進你的企業內網路。增加新文章的方式很簡單,系統的管理者也有能力可以否決特約作者所提供的內容。如果你有時間和能力,可以緊抓著它的核心,客製化其運作方式。」[ 詳全文 ]
  • The Fuzzy Group: performance of open source portal software - "I have been a small part of the Open Source community since 1996 and I've been a regular Unix user since 1986. These technologies, which grew up on the Internet, offer compelling benefits for most organizations. A recent experience with an Open Source portal application, Drupal, pointed out to me just how good the performance of Open Source applications can be ? when it is done correctly." [ read more ]
  • Teledynamics Communications: community plumbing for the web - "Drupal is, as it claims, Community Plumbing, an infrastructure, a framework for building websites which serve a community of interest, but it's also more than this. Drupal has the latent ability to transform the web from a glut of brochures to a dynamic ecology of knowledge, a community record as much as it is a community forum." [ read more ]
  • K-logging: supporting KM with web logs - "There are many robust web log tools that are inexpensive or even free. Popular software includes MovableType, Radio Userland, any of the variations of Slashcode, and my favorite, Drupal. They allow individuals to publish content to a web site easily, and some packages even allow for categorization of entries. Most packages also permit authors to publish an XML feed of content. These low-cost tools help knowledge workers with two core concerns of KM: knowledge creation and knowledge sharing."
  • Linux-Magazine, Issue 55: June 2005 and Linux-Magazin Sonderheft 2/2005: Web Edition (German) - "Drupal - the PHP-based Drupal framework makes it easy for everyday users to design and build dynamic websites".

社群

Drupal不只是一套軟體 -- 它還是一項專案與一個社群。這裡將告訴你Drupal的社群架構與決策過程。人們在Drupal專案裡,可以擁有許多不同的角色和責任。