什麼是 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

weekend project: My 2011 Fall resume in HTML5

I just think I want to try out some webkit transition and animations
And I always think a web developer/programmer should have an online resume
so this is the weekend project

It do not use any new tags like article,
but only all those webkit transition and transformm, acting like slideshows
Nor i am an art designer, so i keep it really minimal in design.

Technically, in particular, webkit transform actually act very much like absolute position
and they will leave from the rendering flow
and thus later elements' position may be weird.
So i wrap them with containers and define their heights and stuff

it should work with wipe actions on touchscreens, and support keyword arrows too.

and of course, feel free to contact me for the real resume with real content

Feeds module 6.x, supports import UTF-8 CSV files

Feeds 模組的功能是可以使用 CSV 或者 RSS 等格式化的內容匯入到 Drupal 內
可以使用 mapping, 將 CSV 的欄位對到 node 的欄位
但我發覺匯入的欄位的名字有一點問題
一直不能 map 到正確的 node field

我一直挖到反轉了整個處理輸入, 處理 CSV 的核心部份
最後才發覺是因為 uft8 的檔案頭有 BOM 三個字符
導致第一行的欄位名大混亂
而且 Drupal7 的 dev 版本已經修正
我便 port 到 D6 的版本
http://drupal.org/node/1005400#comment-5048076

最後, Feeds 的模組其實已經很完整
你可以將兩個 CSV 的欄位 map 到一個多值的 node field
例如匯入多個 imagefield, 你可以 map CSV 的兩個欄位到同一個 node field
feeds 模組會自動將兩個值都放到正確的 node field 值
而匯入 taxonomy 便應該使用 term name 而不是 term id
如果 vocab 設定了是 tags 的話, 新的 term name 還會自動新增, 很方便

Drush Alias - 進階 Drush 技巧

當一部機器有很多 Drupal installation 的時候,
你便會經常:

cd /var/www/site1
drush en -y views

cd /var/www/site2
drush en -y views

再加上測試環境:
cd /var/www/site1_uat
drush en -y views

cd /var/www/site2_uat
drush en -y views

就變得很難維護

使用了 drush alias 之後, 你可以:

//site 1
drush @site1.uat en -y views
drush @site1.live en -y views
//site 2
drush @site2.uat en -y views
drush @site2.live en -y views

實作:

在你的 drush folder 內有一個 example folder,
內有一個 example.aliases.drushrc.php
將它複製到 drush folder 內, 改成 site1.aliases.drushrc.php
增加內容:

<?php
 $aliases
['uat'] = array(
  
'root' => '/var/www/site1_uat',
  
'uri' => 'uat.joetsuihk.com',
 );
 
$aliases['live'] = array(
  
'root' => '/var/www/site1',
  
'uri' => 'uat.joetsuihk.com',
 );
?>

site2.aliases.drushrc.php

<?php
 $aliases
['uat'] = array(
  
'root' => '/var/www/site2_uat',
  
'uri' => 'uat.drinkingdrupal.com',
 );
 
$aliases['live'] = array(
  
'root' => '/var/www/site2',
  
'uri' => 'uat.drinkingdrupal.com',
 );
?>

檔名前端是代號, 使用 domain 很合適 (site1, site2 其實不適合)
$aliases 的 key 則應該使用環境代號, 例如 dev, uat, live 等

Drush 的 example 資料夾內的 example.aliases.drushrc.php 內有更多例子,
例如可以使用 ssh 連線到另一台電腦的 drush,
指定資料庫路徑, 然後用 sql-sync 實現 deployment 等等
我覺得有點 over kill, 便沒有這麼深入的使用了

Educationpost.com.hk

Technical Highlights:

  • Deeply integrated with apache solr with extra custom indexes.
  • Empower solr for rich auto complete widgets and course alert subscriptions content.
  • Finely crafted workflow for selected external customers to publish UGC.

Others

  • Worked with 2 vendors to develop the site simultaneously to deliver in a very short period of time
Snapshot: 

Pages

Google