Revision of 信報論壇 revamp from Sat, 2013-06-22 19:08

都有一段時間忙得要死,沒有更新這個 blog 了
這次的 project 總算順利完成,穩定進入維護階段的同時
花點時間寫一寫這次使用 Drupal 的經驗好了

這個在三月中開始版面設計的網站,當然是使用 Drupal7 開發
結構上不算太複雜,只有首頁,文章內頁,用戶頁,「著名博主」頁
但因為用戶可以自行編寫文章,node edit form 都需要使用客製化的 theme
而且那個 form 需要一定程度的簡化,令一般使用者可以比較容易上手

在網站也使用了 responsive web design 的版面
令手機的使用者可以

而比較特別的是一般的文章在首頁是使用日期分類的
信報編輯和「特選的博主」會出現在頁面上半部份
其餘一般使用者的文章會出現在頁面下半部份
而除了特定的文章之外,首頁只會出現當日的文章
而昨日,以至七日之前的文章可以使用 dropdown 瀏覽
我們客製了數個 views 的 arguments 來處理這種有時效性的頁面設定
date based frontpage

而整個 project 比較大的挑戰有三個方面:論壇文章管理,資料轉移和使用者 single sign on

論壇文章管理
因為一般的注冊使用者可以和信報編輯一樣建立文章
所以信報編輯在文章排序方面需要很大的權力
而每一天都有上下兩半部份的排序,而且經常會因為文章的突發性而修改排序
第二是編輯刪除,博主刪除的功能
在遇到離題,人身攻擊或誹謗的時候編輯需要隱藏文章
但原作者需要看到已經被刪除的字眼,並保留證據
而文章的回應更可以由該文章的原作者管理
所以不可以使用 "未發表" 這種 Drupal 原有的控製
我們在實作的時候大量使用 flags 和 draggable views
flags module 本身提供一個可靠的 API
可以客製 flag 時後續的權限處理
檢舉的功能也是 flag module 的延伸
加上 rules 就可以發出警示的電郵給編輯

資料轉移
這個論壇是一個 revamp ,論壇原有的文章可以追溯到零八年
零八年至今五年的使用者,發表的文章,回應等等資料的數量超過一百二十萬
而資料轉移的工作其間必須下線,直到資料轉移的過程完美的完成才可以上線
最後資料由舊系統匯出,匯入到新系統總共使用了九個小時
由黄昏六時開始,一直到第二日的淩晨三時完成
為了確保轉移的工作不會在最後一刻的淩晨出現錯誤
我們花了大量的時間開發了一個基於 migrate 的 module
透過一個可維護的,持續的,可反覆匯入的方法
將舊的系統中的資料過渡到 Drupal,並對應 Drupal 中的各種主要 entity, node, comment, user, files 等等
其中的代碼開發秘密,我會在 Drupal camp taipei 2013 詳細講解 http://2013.drupalcamp.tw/session/83

使用者 single sign on
最後是使用者的單一登入
舊有的系統因為是使用同一組伺服器,只需要登入一次便可以
同一登入的習慣在兩個不同的伺服器和 sub domain 之下有完全不同的難度
為此我們也客製了整合使用者的模組
令使用者不會發覺論壇和新聞是完全兩個不同的伺服器
其中的代碼我們也會在 Drupal camp taipei 2013 詳細講解
我回來之後才將 ppt 放在這裡

最後,

Google