Archives

You are currently viewing archive for March 2008
カテゴリ: MODx
投稿者: terada
MODxのテンプレート変数で日付けのフォーマット(dateFormat)に日本語を混ぜて使いたいときのTips。

/assets/snippets/ditto/classes/ditto.class.inc.php
の925-927行目

if ($modx->config["modx_charset"] == "UTF-8") {
$dt = utf8_encode($dt);
}

をコメントアウト。これをしないと文字化けする。

参考サイト
tiny-p » MODx:Dittoについて
カテゴリ: MODx
投稿者: terada
MODxの管理画面をカスタマイズするときに使うプラグイン「ManagerManager」を使うときに、忘れがちなポイントと、フィールド名に日本語を使いたいときのTipsです。

< 環境 >
MODx 0.9.6.1p2
ManagerManager 0.2.4.1



< インストール >
まず、インストール時に忘れてしまいそうなポイント。
めっさ簡単ですが、日本語にしてる人いなそうだったのでついでに全部。

1. まずはダウンロード&解凍
http://modxcms.com/ManagerManager-1565.html

2. 管理画面から「 リソース > リソース管理 > プラグイン > プラグインの作成 」
とたどって、「プラグイン名」を「ManagerManager」、「プラグイン コード (php)」のフィールドにダウンロードすると入ってる「plugin.txt」の内容をコピペします。
(「plugin.txt」はサンプルみたいなもんで、カスタマイズする場合はここを弄ることになります)

3. そこから、「システムイベント」タブに移って、「OnDocFormRender」と「OnDocFormPrerender」と「OnPluginFormRender」にチェックを入れる。

4. ここまでできたら最後に「保存」 
↑ これを忘れやすいので注意!1の後に保存しちゃうと2の後忘れてしまいがち(自分)。

5. /assets/plugins/managermanager のディレクトリにダウンロードした「mm.inc.php」をアップロード。

6. あとは、同梱の「managermanagerHelp.html」や「plugin.txt」をみながら設定項目を弄る。



< 日本語への対応 >
インストール後、フィールド名に日本語を使うと、文字化けする場合があります。そんなときの対処法です。
*ここの情報は、こちらでモデレーターのyamaさんに教えていただいた解決法を、自分なりに少し噛み砕いて書いてみます。yamaさんありがといございました!

さきほどの、4でアップロードした「mm.inc.php」を弄ります。
文字化けするのは、文字コードの変換がうまく言ってないからなのでそこを適正にするためにPHPのhtmlentitiesを使ってる部分を修正するみたいです。
ためしにこのファイルを「htmlentities」で全文検索すると、14個所ヒットしました。一応、関係あるところだけ修正しようと、一個ずつ見ていきました。
(めんどくさければ全置換でも大丈夫な気がしますが)
ソースコードには、
「$output = " // ----------- Rename tab -------------- \n";」
などと言う風に、内容が一目で分かるように書いてあるので、これをヒントに上から見ていくと・・・
「Rename field」(309行目)と「Change field help」(464行目)、「Rename tab」(505行目)あたりが、日本語絡んできそうです。怪しい・・・
と、いうことでこのあたりの「htmlentities」を弄ります。第2第3引数にそれぞれ「ENT_QUOTES」「$modx->config['modx_charset']」を仕込んでやります。

例:
htmlentities($newname)

htmlentities($newname,ENT_QUOTES,$modx->config['modx_charset'])

全部で、11箇所弄りました。
これで、文字コードがMODxで指定しているものと対応するようになっていい感じです。フィールド名だけでなく、ポップアップのヘルプやタブにも日本語使えるようになりました。