CMS MODxの覚書
検証を兼ねて、自社サイトをCMS MODxで構築することにしました。
将来的にはTYPO3や、Zend Frameworkや、CodeIgniterに変更するかも知れません。またこのブログも、いつWordPressや、NucleusCMSなどに変更するかわかりませんが、今のところ必要な機能をMODxで実現しようと思っていますので、しばらくはこのまま運用する予定です。
MODxバージョンは、0.9.6.1p2 です。
ブログの第1回目は、サイト構築にあたってのMODxの覚書です。
【文字化け対策】
●public_html/manager/index.php の 143行目に追加
mysql_query("SET NAMES utf8;");
●public_html/manager/includes/extenders/dbapi.mysql.class.inc.php の 97行目に追加
mysql_query("SET NAMES utf8;");
●public_html/index.php の 2行目に追加
mb_internal_encoding("UTF-8");
【Ditto修正】
●[リソース]→[リソース管理]→[スニペット]→[Ditto]の51行目を編集
$language = (isset($language))? $language : "english";
↓
$language = (isset($language))? $language : "japanese-utf8";
●/assets/snippets/ditto/classes/ditto.class.inc.phpの925~927行目をコメントアウト
if ($modx->config["modx_charset"] == "UTF-8") {
$dt = utf8_encode($dt);
}
上記修正後も Ditto の日付の文字化けが直りませんでした。
また、splitter がないと正常に Ditto が動きませんでした。
しばらくは、Ditto と格闘することになりそうですが、暇に任せての作業ですので、サイトの完成を含めていつになるのでしょうか。
その後utf8用の言語ファイルのロケール設定を修正してみました。
対象ファイルは次の7つ
/manager/includes/lang/japanese-utf8.inc.php
/assets/modules/docmanager/lang/japanese-utf8.inc.php
/assets/modules/quick_edit/lang/japanese-utf8.inc.php
/assets/snippets/ajaxSearch/lang/japanese-utf8.inc.php
/assets/snippets/AjaxSearch_OLD/lang/japanese-utf8.inc.php
/assets/snippets/ditto/lang/japanese-utf8.inc.php
/assets/snippets/eform/lang/japanese-utf8.inc.php
具体的には
setlocale (LC_ALL, 'ja_JP'); を
setlocale( LC_ALL, "ja_JP.UTF-8"); に変更
日付は正常に表示されるようになったようです。
またまたその後、Ditto 2.0.2にXSS脆弱性が確認されているらしいので、最新Stableバージョン(2008年06月20日時点で2.1.0)にアップデート。
アップデートは終わったものの、当初から問題になっているパラメータ設定が解決できていません。詳しいドキュメントが http://ditto.modxcms.com/ に掲載されていますので、これを参考に取り組むことにします。
アップデートで新たな問題が発生。
Jotのスニペットコールでソースが表示されています。またページネーション用プレイスホルダがうまく動いていません。
どんどん深みにはまっていくようです。
Jotの件はDittoコールをブラケット+エクスクラメーションではなく、二重ブラケットで呼び出すと直りました。
またまたまた、その後1年ほど経過し、MODxのサイトもいくつか立ち上げさせていただき、かなり理解が深まりました。
またMODxのバージョンも上がり、それに伴ってプラグイン・スニペットもアップデートされ、ここに書かれた問題はすべて解決しています。