Drupal 模組開發

模組開發是需要你有 PHP 的開發能力的
一般的想法是, contributed module 做不到我想要的功能
便自己開發一個
但其實, 遇到這樣的情況的機會實在不多
因為 Drupal 的用戶群已經足夠大了, 一般的問題都會有模組解決
但遇到定製的需求, 為了代碼維護性, 完整性, 便免不了需要自己寫一個module 了

Module development - introduction [module].info

要自己建立一個 module, 先要跟從 Drupal 的一些規定
令 Drupal 知道有這麼一個新的 module 存在

假設要寫的是一個名為 my_module 的模組 (真正的模組只可以使用 a 到 z 和 _ )

  1. 先到 sites/all/modules 建立一個資金夾, 名為 my_module
  2. 在資料夾之內建立兩個檔案
    1. my_module.info (模組的基本資料)
    2. my_module.module (模組的 php code)

my_module.info: (只介紹最基本的要求, 以後再補上非必要的設定)

//不需要 <?php
; $Id$
name = "My module"
description = "模組簡介"
core = 6.x

ref: Writing .info files (Drupal 6.x) http://drupal.org/node/231036

而 my_module.module 內基本上沒有必需的內容
但在這個時候便適合介紹 hook 系統了

你會在 Drupal 的教學看到很多 hook_block(), hook_help()
hook 是什麼?
其實, 每一個 module 都可以使用這些 hook 令 Drupal core 可以使用模組提供的功能
在 my_module.module 的例子, 我應該 declare

function my_module_block() {}

作為 "使用 hook_block()", 或者
function my_module_help(){}

作為 hook_help()
"hook" 是要變為你的模組名, 以區分不同模組之下的相同 hook

下一篇會慢慢介紹各個常用的 hook

ref: Creating Modules http://drupal.org/node/206753

views 中只顯示屬於自己角色的頁面

來自社區的一個問題: http://drupalchina.org/node/8514#comment-26113
比如我是 "writer" role, 我想要一個頁面都是 writer role 的用戶的nodes:

views 的 argument 應:
加, User:roles -> Provide default argument
Default argument type: PHP code:

<?php
global $user;
$roles = implode("+",array_keys($user->roles));
return
$roles;
?>

再選 Allow multiple terms per argument.

解說: 先拿到用戶object
再拿出用戶的所在的 role id
因為可以多個role, 需要implode 成 2+5
Allow multiple terms per argument 便會 OR role id 了

2010-02-10 轉hosting 了

原本使用hostmonster 的, 因為有shell access, 好玩, 可以開svn server, samba
但就是慢了點, 而且我都有自己的svn server 了
現在不太需要另一個shell 了

所以轉了本地存取較快的icdsoft
只提供php, mysql, ftp, 10G space, 夠用就好了, 其他專門服務還是找專門的hosting 吧

大家試試有沒有網頁快了?

最近正在看, 和想看的書 Recent books

正在看:

一本不是有關algorithm 的書, 而是有關思考解決問題的書
"如何漂亮的解決問題" 是這書的重點, 既是高深的書, 又應該及早看看以增強功力


想看: High perforamance javascript

Pages

Google