workflow

Rules 沒有我想要的欄位可以 compare

Rules 原生的 node 欄位只有很少的幾個
例如 created, updated 之類的
但我想比較的是 cck 的欄位呀
一個 checkbox 有沒有選到
一個 node reference 是否為空
一個字符欄位有否包含某些字等等

其實只要先加一個 'entity has field' 的 condition
選你想要比較的欄位
再到 data compare 便會出現你需要的欄位了

又或者更直接的方法是加一個 content is type
選擇你需要的 content type, 但如此的話便必需要是單一 content type 了

話說回來,要在 rules 和 hooks 之間選擇才是真正的困難
相關討論: http://www.drupaler.co.uk/blog/rules-versus-hooks-or-abstraction-shock

Actions, trigger, rules, workflow

這四個Drupal6 的module 互相有關連,功能又多, 做一個小小的整理

action 和 rules 是做同一件事:定義一些“行為”/“行動”
而rules 是進階版的 action
這些“行為” 例如顯示一個信息, 發一個email 等等,單獨存是沒有意義的, 它需要一個觸發器去觸發一個action/rule
這個觸發器就是 trigger module 了

觸發器的例子有:“在儲存一個node 之後”
那你就可以達成:“在儲存一個node 之後,發一個email到 admin@abc.com

以上的例子很簡單,不足以說明它們的強大,但這篇只是想給讀者一個概念
讀者們要先內化這概念, 下一個post 便可以講一下進階的用法

而 workflow 是一個處理流程的module, 本身也是一個巨大的觸發器
workflow 自己可以做到定時出版一類的功能,由draft 到review 到publish, 每一步都有一個trigger, 可以trigger send email 等等的rules
有機會的話也可以詳細講講

Google