Skip to main content

Drupal 教學 - 自製模組 create custom module

Submitted by admin on Wed, 12/11/2019 - 03:47

常覺得要找到一個符合自己需求的第三方模組要找很久嗎?

會覺得明明只是一個小功能,卻要混合多個第三方模組來達成很費工嗎?

如果正在觀看這篇文章的讀者會一點PHP,這系列文章會引導你如何開始開發自己的Drupal模組。

 

如果不會PHP也不用太過沮喪,因為php跟C之類比較底層的語言相比,算是相對非常容易入門的語言,常常光是看著英文就知道在做甚麼了。教學文中也會直接把程式碼直接貼出來,複製貼貼上就能夠動起來,在已經會動的網頁上加一點自己的小修改也是一個不錯的嘗試學習的方式。

 

如果這是讀者第一次嘗試建立自己的模組,建議從下面幾篇文章開始。這幾篇文章中會有著較多的文字說明描述每一個步驟。

 

如果讀者已經對Drupal模組的架構有一定的了解,可以在其他文章中隨興看看有沒有自己需要的功能,再想想如何把內容鑲到自己的程式碼內。

 

話又說回來,既然都談到了Coding,無論語言,其中最重要的問題是一定是: 如何Debug。

下面提供幾種入門但好用的除蟲方式,不需要安裝太多第三方的額外環境就能執行了。

 

devel module

一個裡面包含許多協助開發函式的模組,網站在: https://www.drupal.org/project/devel

裡面最最最常用的東西是一個叫做dpm()的函式。就像是每個初學C語言的入門者接觸到的第一支程式printf('hello world\n');一樣,dpm()提供了與printf類似的功能,可以把當下的輸出結果呈現在瀏覽器螢幕上。在整個程式流程中插滿dpm()觀察自己的code flow與變數變化是一個能夠快速上手的入門方式。

另外,如果在開發流程上遇到了巨大的陣列結構,例如一個複雜的表單,造成dpm()在把內容轉換成字串時超出記憶體限制的情況,可以利用dpm(array_keys($form))來初步篩選自己感興趣的array key內容。

 

貓 error.log

基本上就是網站部屬環境的伺服器運作狀況,如果網站在Ubuntu或是Debain上運行,可以透過 cat /var/log/apache2/error.log來看一下導致頁面空白的php error出自哪裡。具體的紀錄位置取決於所架設的伺服器與作業系統。

 

管理員選單Configuration > Development > Logging and error

這裡面會呈現出一些Drupal的log message,一些有良好error handling的模組也會把錯誤內容輸出在這個頁面上。但如果是php語法錯誤造成網頁空白的狀況這個方式無能為力,還是只能乖乖看error.log了。

 

上面三種工具應該足以應付絕大部分的情況。除此之外,也建議保持備份檔案,尤其是資料庫的好習慣,以免因為一時失誤把自己的網站造成不可逆的毀損。