對drupal的理解【轉】

來源:互聯網
上載者:User

標籤:

寫本文是想跟剛用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的理解【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.