shortlink:http://modx.jp/?id=728スニペットコールのパース処理を改善しました。Revolutionと同じように、正規表現を用いずにスニペットコールを展開します。正規表現によるパターン検出では、多様な記述への対応に限界がありました。今回の改善では、デリミタ文字を順序に従ってトレースすることにより、精密且つ負荷も抑えた処理を実現しています。/>タグや&nbsp;などのHTMLエンティティがスニペットコール内に混入するため)。一行でつなげて記述する必要があります。TinyMCEプラグインのパスオプションの構成変更についてTinyMCEプラグインオプションの設定について、重要な変更があります。必須ではありませんが、オプション設定を更新する場合は、通常のアップデート手順だけではなく手作業による対応が必要です。(※アップデートしたままでも既存の設定を引き継いで動作しますが、設定の変更はできません)解説siteconfigrootrelativedocrelativefullpathurl従来は上記の4つの項目から設定を選択できるようになっています。href要素またはsrc要素に入力されたパス情報をTinyMCE側で判定して、記事内のパス表現を揃える設定です。changeこのように変更しました。path」という表現に改めた点が特に重要です。MODXはドキュメント(ページ)基準の相対パスをコントロールする仕組みを持っていません。「rootrelative」という表現も実際の動作とは異なり、絶対パスに変換していました。change」オプションで、パスの自動変換を無効にできます。パスの出力をスニペットやチャンク・ウェブリンクで制御したい場合は、この設定を用いる必要があります。オプション名は変わっていないため、項目構成の変更はアップデート作業では反映されません。古い設定値のままでも引き継いで動くようにしてありますが、気になる場合はプロパティコードを手作業で貼り付け直して更新してください。この場合、その他の設定値も初期化されるためご注意ください。&height=Height;text;400プロパティコードは上記のとおりです。Options」のデフォルトをsiteconfigにdocument_data.static.phpのリソース一覧の並び順をIDの新しい順にするDittoのconfigの読み込みを改善Wayfinderのconfigの読み込みを改善jqueryアップデート(1.6.4)テンプレート変数の設定項目に"&lt;"や"&gt;"等を入力した際、<,>等に変換されないように&の取り扱いを調整。ついてフォーラムまたは問い合わせフォームを通じてご連絡ください。アップデートの手順http://modx.jp/docs/update.html上記を参照してください。主な改善内容パーサを改善スニペットコールの展開処理を大幅に改善しました。基本的に上位互換性を持つため、使い方を変更する必要はありません。スニペットコールの書き方で今まで戸惑った経験がある人は、下記の改善ポイントをお読みください。※スニペットコールのパラメータ内に[*変数名*]タグを記述する場合は、従来と挙動が変わるためご注意ください。通常のノウハウに沿ってWayfinderやDittoなど一般的なスニペットを利用する場合は、ほぼ問題ありません。従来は、正規表現による処理のため、スニペットコールは一行でつなげて書かないと不安定という印象があったと思いますが、新しいパーサでは逆にパラメータごとに行を分けて書くほうが確実です。「&」を書き忘れたりしても、改行で区切られていれば認識することができます。スニペットコールのパラメータ値で「?」「&」「=」が利用可能に従来のパーサではスニペットコールのパラメータ値として「?」「&」「=」を用いることができなかったため、スニペットごとに独自のアプローチをとっていました。&param=`http://example.com|xq|mode|xe|rss|xa|display|xe|10`]]上記のように、見た目によく分かりません。&param=`http://example.com?mode=rss&display=10`]]新しいパーサでは上記のように記述できます。クォート文字で囲む必要があります。</tr>`]]上記のように、WayfinderやDittoのテンプレートコードをインラインで記述することも可能です。」を含むテンプレートコードを書くことができなかったため、@CODEバインディング記述の便利さを生かすことができませんでした。内部的には上記のように認識します。」をとりこぼしています。&startId=`[[UltimateParent]]`!]そのため、上記のように外側をキャッシュオフ形式とする必要がありました。すれば、「内側のスニペットコールを処理した値」を含んだスニペットコールをページキャッシュに格納できるからです。この方法では、せっかくのキャッシュ処理が使えないため、動作が重いスニペットを用いるページは不利です。&startId=`処理済みの結果`]]新設計のパーサでは、上記のように内側から順番に処理します。キャッシュオフ形式で書く必要はありません。多くのスニペットにおいて、パラメータの値にリソース変数やテンプレート変数を用いることができますが、これはMODX本体がそのような使い方をサポートしているわけではなく、パラメータを受け取ったスニペットが自前で処理しているためです。&startId=`[*parent*]`]]Wayfinderはそのような使い方を想定していないため、上記のようなスニペットコールを記述すると期待どおりに処理することができません。&startId=`[*parent*]`!]上記のように、外側をキャッシュオフ形式で記述すると、入れ子のスニペットコールと同様に、あらかじめ[*parent*]が展開された状態でスニペットコールがキャッシュに格納されるため、結果的には期待どおりに処理できますが、設計方針としてはイレギュラーな使い方になります。これで解決できる理由がよく分からないまま使っているユーザも多いと思います。これを改善し、MODX本体側で[*変数*]を展開してからスニペットに処理を渡すようにしました。&startId=`[*parent*]`]]上記のように記述できます。ページ数が非常に多いサイトではWayfinderの処理はキャッシュを使わないと重く感じることがありますが、これで解消できます。`]]従来のパーサでは、上記のどちらの書き方でも、処理のためにスニペットが受け取る値は一律にtrimしていたため、どちらも同じでした。)で値を囲んだ場合は、囲んだ中身をそのままスニペットに渡すようにしました。半角スペースやタブ、改行などが値の前後についている場合も、削除せずそのまま処理に渡すことができます。このため、DittoやWayfinderのテンプレートコードをインラインに記述する場合などに、インデントや改行タイミングなど出力にこだわることができます。スニペット名末尾の「?」を不要にスニペット名末尾の「?」が不要になりました。[[スニペット名&param1=`値1`&param2=`値2`]]上記のように記述できます。スニペット名に「&」を含めたい時は、これまでと同じようにスニペット名の末尾に「?」をつけてください。Revolutionでは現在のところ「?」が必要なので、載せ替える可能性がある場合は「?」を書くことに慣れておくとよいかもしれません。※10月3日追記PHxのmathモディファイアで「?」を用いる場合は正しく処理できないため、次回修正します。使うことになっていましたが、ダブルクォートやシングルクォートも使えるようになりました。`バッククォート`で囲む・・・[*変数名*]が記述されている場合は、これを展開してからスニペットに渡します。"ダブルクォート"で囲む・・・バッククォートと同じ。'シングルクォート'で囲む・・・基本的にはバッククォートと同じです。[*変数名*]タグが記述されている場合は、そのまま[*変数名*]を文字列としてスニペットに渡します。この書き方が必要なケースはほとんどありません。従来と同様、現在のところスニペットコール・コンフィグ変数・チャンクコールは展開しますので、ご注意ください。可能であれば、PHxプラグインをインストールし、スニペットをPHxモディファイアに置き換えるとよいでしょう。囲まない・・・値の前後のスペース文字(半角スペース・タブ文字・改行など)を削除してからスニペットに渡します。値に「?」「=」「&」を含むと処理を正しく行なえないのは従来と同じです。できるだけクォートで囲むことをおすすめします。表示パターン]]</table>区切り文字を変更できるので、上記のようにインラインテンプレート内にオプション付きのPHxモディファイアを記述することができます。コメントの記述を可能にパラメータを持つスニペットコールを複数行で記述する場合、クォートで囲んだパラメータの右側に、半角スラッシュ2つで始まるコメントを記述できます。コメントは行の終端までが有効です。上記のような記述が可能です。一時的に無効にしておきたいパラメータをコメントアウトできます。その他、動作保証はしませんが、パラメータ名先頭の「&」を省略しても動作します。この場合はパラメータセットを一行ずつ書く必要があります。パラメータの区切り文字も必要です。パラメータ値は複数行に渡って記述できます。Ditto内蔵PHxをアップデートDitto内蔵のPHxを2.1.2から2.1.4へアップデートしました。扱えるモディファイアが増えたことと、カスタムモディファイアをファイルで追加できるようになったことが主な違いです。/assets/plugins/phx/modifiers/モディファイア名.phx.phpファイルで追加する場合は、上記のロケーションに配置します。次回リリースについて現在のところ来月はリリースを行なう予定はありません。Github移行や1.0.6リリースに向けた本家開発チームとの調整を優先します。以上、ご意見ありましたらフォーラムまたは問い合わせフォームからフィードバックをお願いします。