XOOP CBB論壇UTF8中文化與資料庫結合網站記事
今天早上6點完成了系友網頁與XOOP論壇的整合...這結合的過程比我想像中的還要簡單...
架設XOOP時,首先會遇到的便是MySQL中文Unicode編碼的問題。除了XOOP程式碼本身必須是uft8編碼之外,還必須要手動修改安裝檔,以後才能用正確的uft8的編碼去存取MySQL。步驟如下:
- XOOP建置資料庫(CREATE DATABASE)時,設定語系為utf8、校對為utf8_general_ci
- 檔案位置:\html\install\class\dbmanager.php
- 行數:62
- 原程式:
$result = $this->db->query("CREATE DATABASE ".XOOPS_DB_NAME);
- 修正後:
$result = $this->db->query("CREATE DATABASE ".XOOPS_DB_NAME." DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci");
- 資料庫連線(mysql connect)時,修改它連線的語系為uft8
- 檔案位置:\html\class\database\mysqldatabase.php
- 行數:78~82
- 原程式:
if (XOOPS_DB_PCONNECT == 1)
{
$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
}
else
{
$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
} - 修正後:
if (XOOPS_DB_PCONNECT == 1)
{
$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
}
else
{
$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
}
mysql_query("SET NAMES utf8");
跟XOOP的CBB論壇整合時,常用的資料表為:
- [前置詞]_bb_categories:論壇分類
- [前置詞]_bb_forums:論壇,包括主論壇與子論壇
- [前置詞]_bb_topics:每個討論串的標題等資訊
- [前置詞]_bb_posts:每一篇文章
- [前置詞]_bb_posts_text:每一篇文章的內文
只要解析到這種程度,搭配討論區權限的設定,就可以很靈活的運用了。
另外比較麻煩的是登入的權限,一般我們常用Cookie或Session來表示登入的狀態,可是XOOP是把這些狀態包含在$xoopsUser之中,再用$xoopsUser->getVar('欄位名稱')來取得登入的資料,欄位名稱可以參考MySQL資料表[前置詞]_users 。
只要把握這兩個部份,你也可以輕鬆控制XOOP的CBB論壇喔!