对drupal的理解【转】
寫本文是想跟剛用drupal的朋友,分享一下心得,國內用drupal的太少了,希望大家能好好交流. 希望幾分鐘看完后你能馬上上手drupal,至少能理解hook,api,theme,module,cck,hack core
別將drupal想復雜了,所有的東西都能推理出來的,即便你不太懂drupal,你只要懂一點基礎的PHP就行了. 我以前的文章說過,學習drupal,要掌握用php的print_r,要了解php的array,現在多了一點,要會php的include文件.
1.drupal是PHP寫的,所以php能做的drupal都能做,PHP不能做的,drupal當然也不行的. 2.drupal是強大,但強大說明很難上手,原因在于其機制. 上兩個是廢話
3.你應該看了很多drupal的介紹(浪費時間地對比drupal和joomla,wordpress了吧),總該看過hook,api,theme,module,cck,hack core這些關鍵詞了吧 好吧,要理解drupal,關鍵要搞明白什么是module,其余幾個關鍵詞其實都來源于module 理解下面一句話,你就認識drupal了 php要運行起來總得要*.php文件吧,drupal也一樣,php的邏輯很復雜的時候要分開幾個php來寫吧,純PHP文件時將這些php合在一起的時候用的是include 或者 require. drupal也一樣,但drupal 默認include的文件不是*.php而是*.module 所以,只要你將想要運行的內容放在*.module里了,drupal就能自己去include了,不用你自己手寫一句include xxxx.module 4.但是這個*.module有些特別,他幾乎只接受function(中文名叫函數.深入還接受什么,新手不懂也罷),所以你可以將所有你以前寫過的function全都塞進*.module里,完全不用改名(和已經有的drupal函數重名除外)
5.什么是API?所有的drupal function都叫api,所以別將api想得太復雜,因為api就是*.module(還有些include/*.inc文件)里的function.不過現實討論中往往指的是drupal內置的函數,但你裝了別的module后,例如CCK,VIEWS,這些模塊的內部函數你也是可以用的,他們其實也是API.
6.什么是hook,我剛學drupal的時候也非常不想看到這個詞,怕了,感覺很復雜,終于有一次我必須了解hook的時候,我才發現,奶奶的,原來如此簡單.相信我,你在寫PHP的時候,其實寫過無數的”hook!”: hook也是function , 也是放在module文件中的,不過命名特別一點. hook機制就是A函數自動調用B函數. 你會發現drupal有很多函數都這樣: function moduleName_xxxx(){ .. module_involve(XXXX);//不知有沒有記錯了
} 看到這東西,就是定義了一個hook,就是說你在某*.module如果按drupal的命名規則定義了一個function,上面的函數只要一執行的時候,就會自動執行你的函數了.
7.drupal有很多內部函數,這些內部函數默認在啟動的時候就調用,所以你只要在這些一定會運行的函數里加入你自己要運行的邏輯,這不就是一個hook了么?當然,這樣做叫hack core,比較dirty,所以drupal就蛋疼地增加了一個叫module的機制告訴大家:你們只要按某些命名規則來辦事,就不用每次都hack core了!所以其實hook,api,hack core也就那么一回事
8.例如最常用的hook_nodeapi,就是說當drupal要顯示一篇文章的時候,這個hook_nodeapi函數就一定會執行!所以這時你也要想你的函數能執行,你要么就直接啥也不管找到hook_nodeapi的原函數,將你的代碼直接復制上去,要么就按drupal的命名規則定義一個叫xxxName_nodeapi的函數.如此簡單,這樣的同時,你就創建了一個API,也創建了一個moduel drupal的機制你就明白小半了!
9.drupal試圖(事實上)用一個根目錄下的一個index.php來運行所有請求,所以你用屁股想也知道,你的邏輯(代碼)要能跑,必定得被這個index.php引用(include或require)上.所以麻,你不想搞明白drupal的機制,直接在這個index.php上動手腳就行了.這就是我的drupal anywhere的思想來源.
最后:凡是想不明白drupal為什么XXX的,別想drupal,想想要是你自己寫php,你會怎么做,想著想著你就會明白drupal的機制了,就算差一點也差不了太多了. 中國人的舉一反三永遠是無敵的!
http://www.trackself.com/archives/1611.html
總結
以上是生活随笔為你收集整理的对drupal的理解【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AppleApp(1):TextMate
- 下一篇: GNOME 桌面美化