或許Open Source的model並沒有這麼複雜呢...
或許Open Source的model並沒有這麼複雜呢...
Drupal Village - http://drupalvillage.org
Drupal Village已經改到Drupal Taiwan
一直覺得Drupal的中文支援有夠稀少,一開始看著inertia用來架設twblog,再來是滬尾部落群...但是無論如何,要使用Drupal似乎都得看上無盡的英文,連安裝程序都有點難度,更不用說強大的模組功能了。
在用drupal進行開發的時候,最好要有版本控制系統來管理程式碼。
我這兒的範例是最普遍的CVS。
簡述
cvs為知名的版本控制系統,本計畫將會提供遠端或local端提取cvs。
登入流程
0. 請先確定擁有主機登入的帳號密碼
1. 遠端登入
1.1 確定本機裝好cvs
1.2 在你的.bash_profile或.bashrc加入兩行
export CVSROOT=:ext:username@example.com:/home/cvs
export CVS_RSH=ssh
1.3 連接測試看看,密碼請輸入主機登入密碼
drupal的文件分兩個部份,一個是社群所寫的各種handbook,而module開發會用到的章節為development guide。
另一個部份則是由程式產生的function list,要知道如何使用drupal獨特的module system可以在drupal doc中找到。
coding前的準備
coding standard
http://drupal.org/node/318
drupal教學
0. 了解檔案結構和loding流程(請捲到最下方看圖)
http://drupal.org/node/10858
我目前用的版本為另外一組人對drupal做延伸的版本,叫做civicspace,他基本上跟drupal是一樣的,只是將很多module整合進去,多加了web介面的安裝script,另外還有一個重點是整合一個社群軟體civicrm進去。雖然有這個分支,但絕大部分的文件都還在durpal站上。
安裝civicspace
0. 下載並放到web server的資料夾位置
1. 新增兩個資料庫,校對用utf8_general_ci
2. 到 http://your.base.url/install.php ,follow他的安裝步驟
module_invoke機制
對於node而言,他提供幾個可以invoke其他module的設定
1. node_types:文章類型、文章類型調整
2. node_grants:文章權限
他還提供給了hook_function()來給其他module使用node
1. hook_nodeapi:Act on nodes defined by other modules
2. hook_node_grants:Grant access to nodes
3. hook_node_name:Define the human-readable name of a node type
4. hook_node_types:Define multiple node types
有些時候,當要進入一個網站建立session時,便會出現這樣的錯誤訊息:
Fatal error: Duplicate entry 'ea2b42dccc4ec59222fa19b0e7ebad76' for key 1 query: INSERT INTO sessions (sid, uid, hostname, timestamp) VALUES ('ea2b42dccc4ec59222fa19b0e7ebad76', 0, '11.11.111.111', 1114188995) in /home/sites/drupal/includes/database.mysql.inc on line 66
目前原因不甚明確,有人說是因為sessions的sid欄位只有VARCHAR(32)太少,會出問題
解決方式:
1. 刪除sessions.*,重建sessions的資料表
Jan 9 08:55:36 web /etc/mysql/debian-start[656]: drupal.sessions
Jan 9 08:55:36 web /etc/mysql/debian-start[656]: warning : Table is marked as crashed
Jan 9 08:55:36 web /etc/mysql/debian-start[656]: warning : 1 client is using or hasn't closed the table properly
Can't open file: 'sessions.MYI'. (errno: 145)
目前原因不明,暫時的解決方式:
啟動mysql後,用REPAIR TABLE語法來修復資料表
REPAIR TABLE sessions
許多人都懂得利用,也很愛使用自由軟體,卻不太關心這些軟體的起源,甚至許多開發者並不願意撰寫這樣的歷程。然而,會有一個社群、軟體,甚至網站,背後的精神和發展脈絡,往往才是最值得學習的地方,許多時候的成就,並不是成果而以如此簡單。所以呢,身為drupal的高度使用者,就讓我先來聊一下他簡單的歷史。
寫一個就麻煩了...
最近很少更新blog,那是因為我清醒的時間有60%都在與電腦奮鬥,20%玩電腦遊戲,剩下的20%大概吃喝拉撒就沒了,唉~blog在忙起來的時候,真是殘念啊。
奮鬥的東西是什麼呢?其實只是在玩drupal和解決mailing list的問題
drupal的module裝了裝,把網站弄了許多功能,但總是有不盡人意的地方,於是便開始著手進行兩個module的開發。