hook_block

建立一個自定義的區塊模組, 管理複雜的內容和權限設定 custom block module for complex block content and visability

專為右欄複雜的內容和複雜的顯示設定而建立一個模組管理有幾個好處:

1. 返回NULL 便可以令系統跳過
很方便的就可以處理不顯示的狀態
先檢查顯示與否, 不顯示或權限不足便返回 NULL

2. 源碼管理軟件 (scm) 可以助管理
傳統的 add block 方法將block 內容和顯示的邏輯放到資料庫
不利於 scm 管理
而且使用文件的方式儲存代碼更加有更新容易, 除錯容易等等的優點
身為開發者, 而不是使用者, 有責任為網站提供一個更容易維護的環境

3. 避免將錯誤的PHP 放到資料庫
在顯示設定很多時候都會用到 PHP code
而錯誤的 syntax error 的 PHP code 放到資料庫,
會為頁面不能顯示, 也不可以使用 web 介面修改
要到資料庫中修改, 很麻煩

build a module only for complex blocks have several pros:
1. simple "do not display"
check the visability first,
just return nothing for empty blocks, or access denied cases
system will skip them.

2. Source control management (scm) can help
traditional "add block" method put block content and related visability settings in database
which do not fit with scm.
The use of a module file to store code promotes later updates, easier debugging
Also, as a developer, but not a user, there is a responsibility to provide a better maintainable environment.

3. avoid DB crash upon error php code in database
in visability, PHP is often used
and the syntax errored PHP code will also got stored, and crash the page.
You cannot correct it through web interface,
but have to open a database connection and edit them, very trouble

implement hook_block()

hook_block() 是一個給 Drupal 提供block 的方法
假如你發覺自己在 add block 的時候用了 input method 使用了php
那你其實應該建立一個 module, 使用 hook_block()

原因: "module" vs "add block"

  • php 的 syntax error 不會因為寫進了 DB 而做成修正的極大麻煩 vs 要直接修改 DB record
  • File 方便 version control vs DB record 的 version control 和沒有做差無幾..
  • customization 集中方便修改 vs 源碼分散
  • File deployment vs DB deployment

所以, 不要懶了, 而且建立hook_block() 也很簡單

假設 module 名為 joe >Read more