WRN 西洋羅曼史讀書會

Submitted by tky on 三, 04/20/2011 - 04:38
WRN 西洋羅曼史讀書會
Drupal Version
6.x
Develop duration

WRN是個因緣際會(人情壓力)下接的案子。由於自己在學術圈待久了,曾經想過要做書評網站或者學術性質的社群網站,但從來沒想過會做一個以羅曼史為主題的書評社群網站。開發過程一開始不覺得有多難,但隨著案主與社群的要求愈來愈多、愈來愈複雜,開發的時程自然變長,困難度也直線上升。crying即便是網站上線之後,後續的開發與補強工作還是沒停過。

另一方面,由於這個網站本來就有很多社群使用者,流量與耗用的資源都高,為此換過幾家伺服器廠商,也學到一些關於伺服器優化的常識。Drupal雖好用,但越強大的功能需要更多的資源。網站上線初期,不曉得問題這麼大,三天兩頭當掉還得手動重開,真是噩夢一場no。另方面,2010年換過去的伺服器商有也常會出狀況,得跟客服chatting抱怨才能解決。一直到2011年,伺服器總算穩定下來了,才開始放膽擴充網站的社群功能。

網站主要的開發重點是:

  • 將原本用XOOPS的網站轉成Drupal網站:許多人一開始架設社群網站都會採用相對簡單的XOOPS,久了之後才發現功能有限、擴充與整合不易。更麻煩的是:安全性問題。我會接手的前因,就是使用XOOPS的WRN被駭掉(而且不是第一次),站長心灰意冷想把網站結束之前,不死心想要找個更好用的CMS解決方案。我向站長說明Drupal的強大社群支援以及制度化的安全性更新等優點,讓她願意再相信CMS一次angel
    • 接手之後的第1件任務,就是得想法子把XOOPS裡頭的資料轉成Drupal可以處理的架構。由於我本身沒有程式背景,其實還真的不曉得要怎麼做。不過因為常常在Drupal Taiwan和Drupal.org上面逛,看到有相關需求的人還不少,進而發現有人開發了Xoops Import模組,可以快速的進行轉換。然而Xoops Import只有5.x的版本,而我當時已經習慣用Drupal 6.x進行開發了,所以就用笨方法,先把XOOPS網站轉換成Drupal 5.x的網站,接著直接升級到6.x版本,然後才繼續做開發的工作。
    • 然而在進行轉換之前,發現了另一個很煩人的問題:資料庫編碼。早期的mysql沒支援像現在那麼多種編碼方式,大家在用的時候也沒考慮往後資料轉換的問題,都會使用預設值latin 1作為編碼方式,處理繁體中文Big5編碼過程。等到Drupal這些標準CMS出來的時候,早就直接大躍進到MySQL 4.1,使用UTF-8作為預設編碼格式。如果直接把XOOPS資料庫到出來做轉換,在Drupal下繁體中文就會變成亂碼。所以得先在資料庫端進行編碼轉換,才能進行資料轉移的工作。可是在轉換的過程中又碰上Big5編碼中惡名昭彰的「許蓋功」問題,轉換過程中一直出現編碼錯誤而無法順利進行broken heart。後來還得透過文字編輯器手動清除掉錯誤的編碼,才能完成資料庫的轉換。
  • 增強原有的討論區與相關社群功能:網站原有的討論區就是常見的「方格大樓」樣式,而Drupal預設的討論區則比較接近「部落格層次」樣式。由於WRN社群已經習慣蓋大樓模式,無法接受部落格模式,於是只好重新修改討論區的外觀。這部份主要用Advanced Forum+Advanced Forum More Styles+Flatcomments就可以搞定。
  • 制定新的文案與作家內容類型,並以node reference加以關聯:WRN除了社群功能,目的主要在建置一個書籍的資料庫,供使用者查閱、評論與評比等等。本來是想說乾脆用編目Bibliography模組去做,比較快也比較齊全。不過從XOOPS轉換過來的資料套不進標準格式,而且Bibliography也沒法全面的支援Views,就放棄這個想法而改用CCK,就現有的內容類型手工打造符合需求的文案類型。
    • 製作過程中比較值得提的地方,就是將書目資料中的作者和書籍資料分開成兩個內容類型,中間用CCK裡頭的nodereference加以關聯。然後在各自兩個內容類型中,加入Viewfield,把定製好view page嵌入到各個節點之中。於是可以在書籍文案中顯示作者的相關資訊,也可以在作者節點中看到該作者的所有作品。
  • 增強文案評鑑機制:除了建制書目資料,WRN的另一個重點就是書籍的品質評比機制。過去的作法是大家用文字在討論區中表述,轉到Drupal 6.x之後,那可是有一卡車的評比模組可用。這邊主要是用比較流行的Fivestar作為節點評比工作,讓使用者們在評論節點的同時,可以用滑鼠點選星級的方式進行評比。最後再用Views列出統計之後的評比結果。比較有趣的地方是,WRN的幹部們非常堅持要看到「評比的理由」,一定要使用者同時提出評論與評比,不能像Facebook那樣只給一個「讚」就射後不理;可以看出她們對評比品質而非數量的重視(或許是一種性別差異因素,不曉得有沒有做網際網路社會學的人願意做個相關的分析yes)。
  • 會員角色分類與細部權限劃分:作為一個社群網站,角色劃分與管理機制密不可分。WRN有相當多的使用者角色,除了管理幹部之外,為了籌措架站經費(也就是敝人在下我的薪水),還建立了付費會員的制度。Drupal本來就有強大的權限管理模組,這自然不成問題。不過當角色一多起來的時候,各項設定就複雜到令人頭皮發麻的程度devil
    • 討論區版主的劃分:Drupal一個比較麻煩的地方,就是預設沒有常見的討論區版主這種權限劃分,得另外裝Forum Access+ACL去做權限的劃分與設定。
    • 付費會員可以有比較多的內容與內容類型存取權限,這就得用Content Access來處理會比較方便。
    • 網管和內容管理員也是分別的角色,比較累人的地方就是去設定兩者不同的權限為何,然後進行測試。

以上是WRN網站比較值得討論的地方。其實這個網站做的挺複雜的,可以討論的地方也不少,不過再寫下去文章恐怕就太長了。如果有想到要補充的部份,就另文再述囉。