一月 24, 2019 | 後端和Drupal

【Drupal教學】如何建立Drupal 7客製化模組

Drupal是一個強大的工具,最近看到國外的一篇比較Drupal與Wordpress的文章,裡面提到Drupal其實很好用,只是比較難學習怎麼用,真實讓人會心一笑。但深入了解Drupal之後,你真的會覺得Drupal無所不能,彈性、廣度、深度全部都集合在一起,讓我們開發出無數創新的平台,而建立客製化模組custom module則是Drupal非常重要的功能之一,若你還不會不妨看看這篇文章。

前言

Drupal是一個強大的工具,最近看到國外的一篇比較Drupal與Wordpress的文章,裡面提到Drupal其實很好用,只是比較難學習怎麼用,真實讓人會心一笑。但深入了解Drupal之後,你真的會覺得Drupal無所不能,彈性、廣度、深度全部都集合在一起,讓我們開發出無數創新的平台,而建立客製化模組custom module則是Drupal非常重要的功能之一,若你還不會不妨看看這篇文章。

也許你有這樣的疑問

  • 開發自己的模組,會不會很困難?
  • 我不是厲害的工程師,幹嘛要開發自己的模組?
  • 我沒有很深厚的程式背景,可以開發自己的模組嗎?
  • 開發客製化模組有跟沒有差很多嗎,不是已經有很多模組可以使用了嗎?

若上述這些都是你心裏的問題,那我想你應該還沒有體會到過寫模組之強大與好處,下面就我們的開發經驗跟你分享幾個很重要的好處。

3分鐘建立一個客製化模組

Drupal是一個很大的社群,全世界有非常多人一起參與開發,為了讓全世界人一起參與,其有非常完善的模組開發文件,但若你覺得累,不妨等等接著往下看囉:),建立Drupal模組一點都不困難,你甚至不用很熟悉PHP,就可以建立好一個模組,是非常好上手且好入門的。

Drupal之所以彈性大....

若你看過了Drupal 的模組列表,會發現有上萬個模組提供你免費下載與選擇。當然,我們若不是厲害的工程師,無法開發出供全世界使用的模組並不打緊。建立客製化模組給自己使用是一個非常常見也是將Drupal網站彈性發揮的一個重要的手段

舉一個簡單例子:若今天想要會員在網站註冊後,同時把會員資料寫入公司的CRM系統要如何做呢?

這個時候只需要建立一個客製化模組,並且搭配使用 hook_user_insert API即可。

//每次當使用者新增(註冊),就會執行這個函數
function mymodule_user_insert(&$edit, $account, $category){
	
  //寫入CRM的函數,將帳號資料寫入
  writing_data_to_crm($account);
}

這樣看起來,是否覺得很容易呢?

客製化模組在是非常重要的,若將Drupal的眾多模組視為各種的武功秘笈,那麼建立客製化模組,就會讓你打通任督二脈,將Drupal的彈性發揮到極致,因為,你可以根據你的需求整合各種模組成你所想要的一個強大工具。

如何建立一個客製化模組呢?

說到這裡,是否大家都已經興趣滿滿,想要趕快的來試試看了呢? 跟著下面的步驟一起來試試看吧。

以下都是以mymodule模組為範例

建立模組資料夾

首先,請你先建立一個資料夾來作為模組的資料夾路徑可以如下:

  • 一般目錄方法
    ites/all/modules/mymodule
    ``
    
    
  • 有分客製化目錄與Contrib目錄的放法
    ites/all/modules/custom/mymodule
    ``
    
    

建立三種檔案

有了模組資料夾以後,再來只要有以下三種檔案,模組就完成了。

info 檔案

這個檔案主要是告訴Drupal你的模組簡介,是每個模組所必須且必備的,若你的模組是mymodule,那麼info檔案的檔名就是"mymodule.info"囉

一般來說格式如下:

  • mymodule.info
name = mymodule
description = A description of what your module does. 
core = 7.x 
package = My Modules 

若想要瞭解更詳細的寫法,可以參考這裡,有非常詳細的講解。

做到這裡,就可以到你的模組路徑下去看看,就會看到你的模組出現在列表囉。

module 檔案

這個檔案基本上就是模組的靈魂了,其語法是php組成。在這裡檔名就是"mymodule.module"。

一般來說就是像一般的php檔案

  • mymodule.module
<?php

function mymodule_help(){

}

重點提醒如下:

  1. "<?php"
  2. 需要有php的開始字元,但是切記,不要加入結束字元 ?>,根據Drupal的coding standard,加入這些字元可能在部分情況下造成伺服器異常的loading。
  3. 在沒有啟用模組的狀況下,是不會執行這個php檔案的。

install 檔案

這個檔案主要是讓模組在一開始安裝的時候,執行一些建立模組必要的程序,其語法主要也是php組成,檔名就是"mymodule.install"。

主要目的為:

  1. 模組安裝時建立需要用到的資料表
  2. 當新版本號建立時,可以在這執行更新程式,調整進行各式變更。

看完目的你大概也猜到了,很多有名的模組都是靠這個檔案做一開始的資料庫建立與更新,但若今天你只是想要建立自用的模組,來整合網站功能,那麼你是不需用用到這個檔案的唷。

當然,若你很感興趣,可以參考這裡,有很詳細的解釋。

檔案目錄如下:

模組列表如下:

這樣就完成囉~~

結論

Drupal真的很好用,只是很難學習怎麼使用

在看完wp與Drupal的比較之後,真的有這種感覺。其實Drupal的彈性真的考慮到無微不至,再加上Drupal模組的特性,可以隨意的整合各個模組與核心模組,當然一開始學習上面,不會像wp一樣可以隨裝隨用,但是後面的彈性實在是很難以忽視。 若要選擇一套完善彈性且穩健的開發工具,而你的團隊又不像Google這麼龐大的時候,也許Drupal就是你最好的選擇,全世界的工程師,都會是你的團隊之一,善用模組可以整合大家的所長,花的時間極少,但卻有外面難以忽視的價值,一起來學Drupal吧。

Drupal 8如何做呢?

若大家現在是想要學習Drupal 8的模組該如何寫,可以參考以下文章Drupal 8 專用的CLI工具:Drupal Console