MODxでCMSの恩恵を賜りつつ、validを保ち、かつWEB標準化を目指そう
Welcome !! Now 2008.07.25 16:23 (JST)
[ ハウトゥ,トラブル ]
MODx0.9.5 rev2106の問題点と解決策についてまとめてみました
MODxのサンプルサイトには、以下のような問題や不明な点があります。対処法がわかっているものに関しては、それも記しています。
ドキュメントID37「[*loginName*]」、エイリアスが、blog-loginというドキュメントは、どこからもリンクかかってない?。サンプルサイトで使われてない…?。

(入力は出来る。動作も問題なし)。
またIE6.0では問題なし
「post comment」をクリックした後、「Uh oh ... it's a 404! (Page Not Found)」にリダイレクトされる
対策
Jot1.0.1が出ているのでバージョンアップすると動作するようになる。が。。
コメント欄に2バイト文字しか入力しないと「You forgot to enter a comment.」と言われて投稿出来ない。
コメント欄に一文字でもシングルバイトがあればOK(タイトルは2バイトのみでもOK)。
jot1.1.2が出ています。これにアップグレードすると問題を解決できます
こちらは、フォーラムで既出の問題です。
参考トピ:miniblogについて
対策
これは、chaunkのFromBlogに記述された、Javascritpの問題で、以下のように修正して解決出来る
nwpub_cal1.path="manager/media/";
↓
nwpub_cal1.path="[(site_url)]manager/media/";
これは、Newspublisherの問題で未決
回避策
これは、Newspublisherのスニペットの呼び出しで、パラメータ「&clearcache=`1`」を指定するとポストの後、Dittoでの出力に反映される
私の環境だけかも知れないのですが、IE6.0で「Add a blog entry」にクセスすると、スクリプトエラーがステータスバーに表示され、コンテンツ部が、リッチテキストエディタになっていません。
そしてログアウトすると、Loginページ(ID 4)にリダイレクトされます
IEの設定のせい。。?かな。。?
対策
ツール>設定>ユーザで、CAPTCHAの使用をyesにすれば、チェック機能が働く。CAPTHAの使用をしたくなければ、chunkの「FormSignup」の該当部分を削除した方がよいでしょう。
フォームのlabel、inputのforとidが、サイドバーのログイン部分のfor、idの値とダブっていて、例えば、passwordを入力しようとしてクリックしても、サイドバーのパスワード部分に入力されてしまう(FFで確認)。
(IEでは問題なく動いちゃう…?)
対策
チャンクFormSignupのその部分を修正すればとりあえず動く(と思います…)。
ついでにtabindexも直しました。。
ログインフォームを直した方が良かったかも。。ファイル添付
eFormのパラメータ設定ミスが原因
対策
Contact Us(ID6)以下の部分を修正する
[!eForm? &formid=`ContactForm` &subject=`[+subject+]` &to=`[(email_sender)]` &ccsender=`1` &tpl=`ContactForm` &report=`ContactFormReport` &gotoid=`46` !]
↓
&to=`[(emailsender)]`
[[Contac tForm? &sendTo=`[(emailsender)]`]]
上記は、eFormと同様の機能であり、本来書く必要のないものと思われます。また「Contact Form」は0.9.5には、標準実装されていません
詳しくは見ていないのですが、目につくところでは、MODxCssのdarkを選択した時、FFでは、一部リンクが効かなくなり、IEでは、表示崩れを起こしています
一応、かなり目につくところだけ修正しましたが(見栄えという意味です)、実際には他にもinvalidな定義があると思われます。
以下の条件において、2バイト文字の検索が出来ません
対策:manager/index.phpとAjaxSearch.inc.phpの書き換え
} else {
mysql_select_db($dbase);
}
↓
} else {
mysql_select_db($dbase);
}
mysql_query("SET NAMES 運用文字コード(utf8など);");
$db = mysql_connect($database_server, $database_user,
$database_password, true)or die("Cannot connect to database
(connectForAjax)");
$selected = mysql_select_db($database, $db) or die
("Cannot select database (connectForAjax)");
↓
$db = mysql_connect($database_server, $database_user,
$database_password, true)
or die("Cannot connect to database (connectForAjax)");
mysql_query("SET NAMES utf8;");
$selected = mysql_select_db($database, $db) or die
("Cannot select database (connectForAjax)");
対策:
ZeRoさんがAjaxSearch.inc.phpを書いてくださいましたのでダウンロードし上書きアップロードしてください
phpの「internal_encoding」を確認して、もし、「internal_encoding」が、運用キャラクタコードセットと異なる場合は、Internal_encodingと運用キャラクタコードセットを同じ設定にしてみてください。
例:
Internal_encoding がISO-8859-1で、サイトのキャラクタコードセットがUTF-8の場合
対策:
php.iniでInternal_encodingをUTF-8にします。
サンプルサイトで読み込んでいるCSSに、ハイライト用のクラスが定義されていないのが原因です。
以下のようにCSSに追記すると良いでしょう
span.AS_ajax_highlight {
background-color:#ff0;
color:#333;
font-style:italic;
}
クラス名以外の値は任意で変えてください
例えば、cssなどでfont-familyに日本語の文字フォントを指定していたりすると化けます。それを保存すると、化けたまま保存されます
対策:
manager/action/files.dynamic.phpの543行目付近を以下のように訂正します
<td><textarea style="width:100%; height:370px;" name="content"><?php echo
htmlentities($buffer); ?></textarea></td>
↓
<td><textarea style="width:100%; height:370px;" name="content"><?php $code =
mb_detect_encoding($buffer,'ASCII,JIS,UTF-8,EUC-JP,SJIS'); $buffer =
mb_convert_encoding($buffer,$modx->config['modx_096charset'],$code);?><?php echo
htmlentities($buffer,ENT_COMPAT,$modx->config['modx_096charset']); ?></textarea></td>
デフォルトでは、以下のように、TinyMCEのインタフェイスが日本語化されていません

対策:
リソース>TinyMCE を開いて197行目に以下を追記します
global $manager_language;
0.9.5には、ユーザクッキーを利用してテンプレートを簡単に切り替えるプラグイン「TemplateSwitcher」が標準実装されていますが、このプラグインが有効の場合、ドキュメントの設定で、「キャッシュ可」にチェックが入っていても、キャッシュ機能が無効になりキャッシュされません。
対策: