Drupal

vim 中設定正確的 php 文法高亮 filetype php.html sinppets

Drupal 的 php, module, tpl.php 檔會包含 html 和 php 的代碼
而vim 預設的情況之下不會對 php 檔內的 html 碼高亮
但只要設定使用 php.html 就可以先高亮處理 php, 再處理 html 高亮, 例:

augroup php
  "php file also use html snippnets
  autocmd BufRead,BufNewFile *.php set filetype=php.html
augroup END

而如果你有使用 snipemate 的話,
Drupal 有一個snipmate 的庫可以使用
Vim SnipMate for Drupal
https://github.com/theunraveler/Drupal-Snippets-for-Vim

Drush 5.x-dev 支持視窗系統 support Windows system!

http://drupal.org/project/drush

下載點: http://drush.ws/resources
下載完成直接雙擊安裝
安裝完成便可以雙擊桌面圖示, cd 到你的 Drupal root, 開始使用 Drush

還有, Drupal 已經轉用 git 作為版本椌制系統
Windows 下你可以使用 msysgit http://code.google.com/p/msysgit/
它帶有一個 msysgit shell, 可以使用 linux 命令, Drush 命令

再加上 gvimsnipMate, 成就了我終極的, 跨系統的開發工具組

什麼是 Drush

Drush 是一個面向開發者的工具/模組
它是一個使用命令行的工具, 可以說是 Drupal 的遇萬用工具刀

先談一下命令行
$ drush dl views
以上的代碼, $ 是命令行的開始drush dl views 是開發者輸入的部份
*nix 或者 Mac 可以使用原生命令行
Windows 內: "開始" -> "執行" -> 輸入 "cmd" 便會打開命令行

入正題, 例子 $ drush dl views
一句命令便可以將 views 模組從 drupal.org 下載, 解壓到 sites/all/modules
$ drush dl zen 下載, 解壓到 sites/all/themes
$ drush en views 便可以啟用 views
$ drush cc 清除緩存

還有很多很多方便的功能:
$ drush sql-cli 進入 MYSQL 命令行
$ drush user-login 建立一條一次性的登入網址連結
還有 features 模組的各種更新, 輸出命令
等等等等, 都是進階使用者的最強武器!

p.s. 最近才發覺我一直沒有介紹入門的 Drush 應用...

伸延閱讀: Windows 內安裝 Drush

Drupalcon London 2011 session Video

沒有機會參與的Drupal 開發者 (例如我) 一樣可以線上觀看這次 Drupalcon 的 session
http://blip.tv/drupalcon 已經有很多精彩的session

實用的例如 An Introduction to Form Builder 是很好用的開發者工具,
themes How to Theme Like A Rockstar
A Bulletproof Approach to Theming

展望未來的 Entity API

Staging, 一個大型的 CMS 必需的東西, 社群終於都它提起興趣
Content Staging and Deployments in Drupal 7
Drush Deploy
Data Migration into Drupal
Workbench: Managing Content Management

時間都不夠用呀!

控制 variables table 的值

Variables tables 有很多零碎的設定值
模組需要儲存的簡單資料可以很方便使用 system_settings_form() 的放到 variables

但有些情況之下將 variables 放到資料庫是不方便的
其中一個例子是測試環境和 production 不一樣的時候
deployment 完成之後還要再修改資料庫
步驟多, 又是人手操作, 錯誤便容易發生

例如 gmap 模組需要一個 Google map API key
而該 key 則是 google 根據 domain產生的
例如 uat.joetsuihk.com 和 www.joetsuihk.com 使用的 API key 便不一樣

我的解決方法是在 settings.php 設定 $conf 變數
那資料庫中的 variables 便會被覆寫
例如:

<?php
if($_SERVER['HTTP_HOST']=='uat.joetsuihk.com')
 
$conf['google_map_api'] = 'uat api key';
else
 
$conf['google_map_api'] = 'production api key';
?>

另一個方法是使用 strongarm 模組
配合 ctools 和 features
一樣可以將 variables 收進 version control

什麼是 context

Context 模組的功能其實和區塊的顯示設定 (visibility) 很相似
就是 "根據某些條件" 顯示 "某些區塊"
例如, 在 "用戶頁面" 顯示 "用戶的資料區塊"
所以, 假如你發覺你的區塊設定變得很複雜而且維護很困難的時候
你便應該要使用 context 模組了 >Read more

遊記 Drupal Cacmp TaiPei 2011

今年很榮幸能參加 2011 年的 Drupal camp Taipei
還被邀請介紹了一下我做的一些網站和背後的一些技術
雖然時間上比較倉猝
但大家看投影片也應該可以起碼了解一些概念
https://docs.google.com/present/edit?id=0AawD1m0i97PYZDRxcmh6cl8yMTVkcDY...
出發之前還怕我的普通話太爛, 還好大家都好像聽得懂我講的東西 (希望不是客氣說話)

另外當然就是可以親身見到很多平常在網路上交談的朋友
都看頭像實在是想像不到你們的樣子啊
還有好些朋友都說看過我的部落格
和很多朋友交換名片, 認識新的 Drupaler
遺憾我記名字的能力很差, 經常都認得樣子但名字則說不出來
但真的很開心!
期待下一年的 Camp!

這 Camp 有數個第一次:
第一次到美麗華摩天輪
第一次 open discussion
第一次 sprint
第一次坐貓空
第一次騎機車!!! (感謝 jimmy)

p.s. 多謝 Norman 很熱情的送了我從花蓮帶來的麻薯

我的flickr http://www.flickr.com/photos/joetsui/sets/72157627052995273/

最後下面這麼師的男生到底是誰啊

Boost cache module health and tips

Boost cache module 是我常用的提升效能的模組
好處是搭建簡單, 幾乎能使用 Drupal 的環境都可以使用
也不需要 shell 的權根
但效能上沒有 vanish 的好

關於 boost 的效能, 最重要的是正確的 cron job
正確的cron 可以確保 boost 產生的檔案和資料夾在過期的情況之下清走
否則 cache 資料夾內的檔案數量很快會直線增加
反倒拖慢了網站

cron 的運行密度起碼需要和 boost 的 expire time 一致
甚至更短
例如本站的 cache 是 1小時 expire, cron 是15分鐘

其餘比較重要的是
Clear all empty folders from cache
和時常留意 "Clear Boost expire data: X page" 的數字
我也有見過 250K PV/m 的網站仍可以使用 boost 的

而cache 的 expire time 便看你的網站的流量
以這個站一天二三百的 PV
一小時平均十頁左右的話, 只是 frontpage 或 Drupal教學 的主頁用 boost 才有意義
其餘只會令第一個瀏覽者載入減慢
但所產生的cache 被其他使用者使用的機率甚低
這些設定都是需要計算一下的

[Contribution to module] CCK table field

CCk table field is an handy field that let user create a table output by entering

1|2|3
4|5|6

But it lags a check to ensure there is the same number of columns in each row

So there is the patch to fix:
Validate correct number of columns in each rows
http://drupal.org/node/1013224

2011-03-30 HKDUG meeting presentation (Hong Kong Drupal User Group Meeting)

On 2011-03-30, at Tunner's office, I presented the way I build image gallery, as requested from last time's meeting. Enjoy, feedback welcomed!

https://docs.google.com/present/view?id=d4qrhzr_179ntv4brhb