XwordsをUTF-8対応にする
投稿日時 2010/01/07 | カテゴリ: XOOPS
|
Xwords(バージョン0.46)は、マルチカテゴリー辞典「Wordbook」を日本語向けに特化させた辞典モジュールです。
しかし、本家XOOPS用のモジュールで、ホダ塾ディストリビューションなどUTF-8で動かすには、以下の修正が必要になります。
UTF-8用のlanguageファイルを追加する
- languageフォルダの下にja_utf8フォルダを作成し、japaneseフォルダのファイルを全てコピーします。
- コピーしたファイルの文字コードをUTF-8に変換します。
モジュールのインストールで警告が出る
修正ファイル:xwords/class/xwords.textsanitizer.php
47行目のコンストラクタに親クラス「MyTextSanitizer」のコンストラクタを追加します。
修正前:
- function XwordsTextSanitizer()
- {
- }
修正後:
- function XwordsTextSanitizer()
- {
- parent::MyTextSanitizer();
- }
頭文字(イニシャル)での検索が機能しない
修正ファイル:xwords/include/functions.php
151行目と161行目の「substr」を「mb_substr」に変更します。
修正前:
- elseif (!ereg('^[[:blank:]]|[[:cntrl:]]',$term) && $term)
- {
- $init_t = substr($term, 0, 2);
- }
- elseif (!ereg('^[[:blank:]]|[[:cntrl:]]',$proc) && $proc)
- {
- $init_p = substr($proc, 0, 2);
- }
修正後:
- elseif (!ereg('^[[:blank:]]|[[:cntrl:]]',$term) && $term)
- {
- $init_t = mb_substr($term, 0, 2);
- }
- elseif (!ereg('^[[:blank:]]|[[:cntrl:]]',$proc) && $proc)
- {
- $init_p = mb_substr($proc, 0, 2);
- }
修正ファイル:xwords/letter.php
71行目のSQLのWHERE句から「binary」を削除します。
修正前:
- " ON e.categoryID = c.categoryID) ".
- " WHERE e.init regexp binary '".$init_str."' AND e.datesub < '".time()."' AND e.datesub > '0' AND e.submit = '0' AND e.offline = '0' AND e.request = '0' ".
- "$cID ORDER BY binary e.proc ASC";
修正後:
- " ON e.categoryID = c.categoryID) ".
- " WHERE e.init regexp '".$init_str."' AND e.datesub < '".time()."' AND e.datesub > '0' AND e.submit = '0' AND e.offline = '0' AND e.request = '0' ".
- "$cID ORDER BY binary e.proc ASC";
管理画面から登録するとカテゴリが入らない
修正ファイル:xwords/admin/entry.php
130行目の「addElement」の行を削除します。
修正前:
- ob_start();
- $sform -> addElement( new XoopsFormHidden( 'categoryID', intval($categoryID) ) );
- $mytree -> makeMySelBox( "name", "weight", $categoryID );
修正後:
- ob_start();
- $mytree -> makeMySelBox( "name", "weight", $categoryID );
検索画面の検索語が文字化けする
修正ファイル:xwords/search.php
50行目と215行目に文字コードの変換を追加します。
修正前:
- $queryarray = array();
- $xoopsTpl -> assign ( 'h1id', $myts -> makeTboxData4Show( $xoopsModuleConfig["h1id"] ) );
- $xoopsTpl -> assign ( 'searchform', showSearchForm($query,$type,$catID,$andor));
修正後:
- $query = mb_convert_encoding($query, "EUC-JP", "UTF-8");
- $queryarray = array();
- $xoopsTpl -> assign ( 'h1id', $myts -> makeTboxData4Show( $xoopsModuleConfig["h1id"] ) );
- $query = mb_convert_encoding($query, "UTF-8", "EUC-JP");
- $xoopsTpl -> assign ( 'searchform', showSearchForm($query,$type,$catID,$andor));
|
|