2009年5月24日 星期日

Simple Machines Forum(SMF)v1.1.9安裝筆記

最近在整理vhost上的網站,其中orz討論區已經有段時間沒有維護了,趁這個機會升級一下,沒想到一升級就orz了...,原本使用的是1.1.6版的SMF使用的是自訂的佈景,由於之前維護的人也不管了,這個孤兒系統的維護又回到系統管理員小弟身上,未了避免往後維護上的不便,把所有客製化的部分去除,包含自訂的佈景與外掛,以及資料庫編碼由latin1轉為UTF-8

首先在舊系統以管理者登入,強制重設所有使用者的佈景主題為預設值,在模組中升級SMF直到1.1.9版,最後用mysqldump將資料庫整個倒出來,記得修改編碼為UTF-8

重新安裝SMF於新的目錄,清空新建立的資料庫並將舊的資料匯入,將舊有attachments目錄複製到新的目錄,登入管理介面測試

已知問題

1.使用中文化出現"Sorry, the copyright must be in the template.",因為中文化未更新copyright導致的,修改languages底下的index.chinese-traditional-utf8.php檔案,將forum_copyright這個翻譯改為
$forum_copyright = '<a href="http://www.simplemachines.org/" title="Simple Machines Forum" target="_blank">Powered by ' . $forum_version . '</a> | <a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2006-2009, Simple Machines LLC</a>';

2.中文在斷字的時候被切掉變成問號(?),因為PHP無法正確判斷中文字的問題須改用mb_string系列的函數,修改Sources目錄底下的Load.php檔案,將$func = array的substr與strlen這兩個索引內容中的return片斷改為
if(function_exists(\'mb_substr\')){
return $length === null ? mb_substr($string,$start,mb_strlen($string,\'UTF-8\'),\'UTF-8\') : mb_substr($string,$start,$length,\'UTF-8\');
}else{
return $length === null ? implode(\'\', array_slice($ent_arr, $start)) : implode(\'\', array_slice($ent_arr, $start, $length));
}


if(function_exists(\'mb_strlen\')){
return mb_strlen($string,\'UTF-8\');
}else{
return strlen(preg_replace(\'~' . $ent_list . ($utf8 ? '|.~u' : '~') . '\', \'_\', ' . implode('$string', $ent_check) . '));
}

3.中文字看起來太小,因為字體是定義成9pt,可修改Themes目錄中的style.css,在.smalltext區段之後加上
.tborder .bordercolor .windowbg2 b a{
font-size: 1.3em;
}
#upshrinkHeaderIC .windowbg2 b a{
font-size: 1em;
}
#upshrinkHeader2 .titlebg2 span{
font-size: 1.5em
}

.windowbg .smalltext,.windowbg2 .smalltext,.windowbg3 .smalltext{
font-size: 1em;
}