MODx Evolution 1.0.2 にアップデート
MODx Evolution 1.0.2 がリリースされましたので、久々にアップデート。
0.9.6.1からのアップデートでしたが、前回のセットアップから、サーバー環境が大きく変わっていることもあり、ものの見事に失敗。とは言っても、想定範囲内の文字化けのみでした。
Windows7効果の買い替え需要で、閲覧者の画面解像度も高くなりそうなので、この際とばかりにテンプレートを少し変更することを決意。
そうなると、色々と試したくなるものです。
とりあえず、前から欲しかったスニペットをつくることに。
カレントドキュメントから任意の階層を検証し、一致した場合に任意の文字列を返してくれるスニペットです。
UltimateParent を改造して10分ほどでできましたが、検証が終わっていませんので、動作検証していただいた方は結果をご報告いただけると助かります。
これって何に使うのかというと、カレントメニューのボタンの色彩や形状の変更を、階層に関係なくスニペットに処理をさせることができます。
共通テンプレート内のボタンにこの処理を施すとなると、どうしてもスタイルシートが煩雑になりがちでしたが、今回のスニペットで簡便に利用できるようになりました。
下のアドレスからダウンロードしてください。
ActiveParent
ダウンロード・解凍後、スニペットを新規作成し、ActiveParent.php の内容をコピー・ペーストします。
スニペット名は任意で構いませんが、ここでは ActiveParent として保存します。
呼び出しは、次のようにテンプレートやチャンクなどのメニューのスタイルシートの属性から行います。
<li id="MainMenu"><a href="index.html" class="[[ActiveParent? &topLevel=`0` &upID=`1` &reTxt=`active`]]"> ホーム</a></li>この場合、ActiveParent の引数は3つありますが、それぞれ
topLevel : ターゲットとなる階層レベルです。0が最上位です。
upID : ドキュメントがターゲットとする階層の親IDを表します。
reTxt : ドキュメントの親IDが一致した場合の戻り値を指定します。
次にスタイルシートには、次のようにタグのクラスとして、reTxt で指定した戻り値を定義します。
li#MainMenu a.active { background-color: #F00; }これで完了です。
個人的には、非常に便利なのですが、人それぞれにホームページの構造が違いますので、気になる方は使ってみてください。
もちろんこのサイトでも使用しています。
今気づきましたが、テンプレート変数を作成し、リソースでダブルバイト文字を使用するとバックスラッシュが入ります。まさにこのページの[Tags]がそれ。なぜ?
データベースを調べてみましたが、データにバックスラッシュが含まれていないことから、Dittoからの値の引き渡し方に問題があるのでしょうか。languageは指定してあるのですが・・・
その後の調査で、どうもデータのテキストを参照する際に文字化けしているところまではわかりました。
管理画面内の説明文でも化けている部分がありましす。
PHPのバージョンが原因かと思いましたが、同じサーバー内でも、他のドメインではバックスラッシュは含まれていません。このドメイン内のみ、他のシステムでも同様の現象が発生しています。う~ん?
それ以外にも、「AjaxSearch」、「Wayfinder」、「テンプレート変数」など触れば触るほどに疑問点や問題点が噴出してきます。
いつものことですが、これから少しづつ解決していこうかと思います。今回はここまで。