2008/10/27

快速升級 Drupal

先說好,這個方法只適用在主要版號相同的情況(例如:5.0 -> 5.1) ,並不適用在主要版號不同的狀況(例如:5.x -> 6.x)。



  1. 備份檔案與資料庫。

  2. 下載新版的 Drupal 主程式。

  3. 解壓到某個目錄。

  4. 刪除 .htaccess 跟 sites/default/setting.php 這兩個檔案。

  5. 用系統管理員的權限登入系統。

  6. 複製解開的檔案到舊的系統目錄中。

  7. 跑 update.php。

2008/10/20

超大字集~

我目前使用的輸入法是「新酷音輸入法」,之前在使用的時候,常常有時候選字翻到最後幾排時,都有缺字,即便我裝了號稱有Ext-B 字面的「新細明體更新套件」也是一樣。


直到某個很無聊的下午,我到很久沒更新的「Unicode 補完計畫」的討論區去翻文章來看,發現了一個維基百科的連結:「Unicode 擴展漢字」。


在該連結裡面,我發現了一個有超大字集,具有 Ext-A/B/C 字面的「海峰五筆超大字符集」,下回來裝上去後,本來缺字的部份都顯示出來了~

2008/08/27

在 Drupal 中配合 Views 和 Localizer 做多國語言頁面

由於 Localizer 沒辦法對 frontpage 做個別指定,而且我需要的只是把屬於各國語言不同的資料撈出來,畫面的結構不變。
因此,我在 Views 中設定 frontpage,並在 Argument Handling Code 中輸入:




global $locale;
$view->filter[] = array(
'id' => 'localizernode.language',
'field' => 'localizernode.language',
'operator' => 'is',
'value' => $locale,
);
return $arg;


即可

2008/08/15

CakePHP 的 Model 中 id 屬性被修改的問題

我在使用 Auth 這個 Component 時,由於很多地方都會使用到 User 這個 Model 來實現一些功能,所以我在 app_controller.php 裡面於 __construct 時將一個 User 物件 new 出來,並將其設為 AppController 的屬性來共用。

問題發生在 user/add 的 action 上面,當執行 $this->User->save($this->data) 時,總是會改寫到登入 User 的資料,而非新增一筆 User 的資料。
後來我發現,$this->User 的 id 屬性變成登入 User 的 id(正常的狀況是,這個 id 屬性應為 false)。
所以我檢查 app_controller.php 使用到 User 的地方,發現只要在 beforeFilter 這個方法內,另外 new 一個 User 物件出來代替使用 AppController 的 User 屬性即可解決這個問題。

不過為了保險起見,在 user/add 這個 action 當中,我還是會加入以下兩行敘述在 $this->User->save($this->data) 之前:

unset($this->data['User']['id']);
$this->User->id = false;

2008/08/12

CakePHP 將預設值填入表單的方法

方法其實很簡單,在 Controller 裡面的 action function 裡面設定 $this->data 這個值即可。

add:
$this->data = $this->Model->create();

edit:
$this->data = $this->Model->read(null, $id);

2008/07/15

啟用狐仙大人第三版

話說這一版出來有一段時間了,不過之前因為在趕案子,沒空測試,所以拖到上禮拜比較閒的時候才換上新版~
我是有參加那個當日下載的金氏世界紀錄啦,不過當天我就發現可攜版也同時放出來了~

有些附加元件並沒有這一版,所以我重新做了一個目前我在用的列表:


 


2008/07/03

Node Import 的匯入技巧

目前做的這個案子,需要把舊的文章匯入到新的系統中,匯入是沒什麼問題的,文章數目沒少,可是有些文章就是有幾個欄位匯不進來。
研究之後發現,是因為文章本文的欄位 (一般來說是 Body) 的內容引起的問題,實際上因為內容很長,我也無法判斷問題出在哪?

只記得為了避免雙引號跟換行字元,我在匯入之前已經先處理裡過了:我用 OpenOffice.org 來置換字元,因為他支援正規表達式的搜尋與取代,我把雙引號換成單引號、換行字元換成 <br />。

後來我把這個本文欄位移到最後一欄,並在最後一欄後面再加一欄防護欄,內容是兩個雙引號。
我發現用這樣的方式匯入,文章都沒有問題,所有的欄位也都可以匯入。

另外要注意的事情是,有些模組會對文章作直接或間接的前後處理(例如:Pathauto 、Taxonomy Menu 模組),匯入前要先停用。