ページ 11

1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました

Posted: 2012年10月10日(水) 10:57
by hirostraydog
-----
ご利用のサーバ:さくらインターネット さくらのレンタルサーバ ビジネス
MODXのバージョン:1.0.6J-r7
PHPのバージョン:5.2.17
MySQLのバージョン:5.5.15-log
ブラウザ:Chrome、Firefox
-----

1.0.6J-r6から1.0.6J-r7にアップデートしました。

親リソースの menutitle を表示するのに、以下のスニペットを使っていました。

コード: 全て選択

[[GetField? &parent=`1` &parentLevel=`1` &field=`menutitle`]]
しかし、アップデート後は上手く動作しなくなり、menutitle が表示されなくなりました。

そこで、現在は下記のスニペットで対応しています。

コード: 全て選択

[[Ditto? &documents=`[*parent*]` &tpl=`@CODE:[+menutitle+]`]]
また、
内蔵PHxで [*content:id=7*]といった書き方ができるようにしました。{{7:content}}よりは分かりやすいと思います。
これが安定して動作すればGetFieldは不要になると思います。
http://forum.modx.jp/viewtopic.php?f=34 ... ield#p4761
とありますが、同様の書き方をしても上手く表示させませんでした。

(ふだんは、if文を使ったスニペットを使っているので、内蔵Phxを使っていません。しかし、内蔵Phxをオンにしても表示できませんでした。)

なお、別のテンプレートで下記のようにスニペットコールしているのですが、テンプレート変数がきちんと取得できています。

コード: 全て選択

[[GetField? &docid=`7` &field=`hogehoge`]] 
どなたかのお役に立てば幸いです。

Re: 1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました

Posted: 2012年10月10日(水) 11:39
by yama
了解です。のちほどパッチを作りますので確認いただけると助かります。
細かい部分をどんどん整理しているのですが、イレギュラーな処理でたまたま動作していた場面がわりと多い感じです。

Re: 1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました

Posted: 2012年10月10日(水) 11:43
by hirostraydog
早速のご対応、ありがとうございます!

パッチの件、よろこんで確認いたします。

どうぞよろしくお願いいたします。

Re: 1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました

Posted: 2012年10月10日(水) 14:28
by yama
パッチを添付しました。これを解凍してassets/snippets/getfield/ ディレクトリに上書きしていただけますでしょうか。
具体的な究明は行なってませんが、処理を見たところ今のEvoなら数行で書ける内容だったので変更しました。GetFieldはMODx0.9.2.1の頃から更新されてないみたいです。

[*content:id=7*]
上記の書き方がうまくいかないのは、もしかするとプラグインのPHxを導入されてますでしょうか。その場合は本体のパース処理を先にPHxプラグインが横取りする形で処理するため、そのようになると思います(今回は違うかもしれませんが)

Re: 1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました

Posted: 2012年10月10日(水) 15:16
by hirostraydog
早速パッチを作っていただき、本当にありがとうございます。

パッチを上書きしてみたところ、今度は下記のスニペットコールでテンプレート変数を取得できなくなりました。

コード: 全て選択

[[GetField? &docid=`7` &field=`hogehoge`]]
上記のスニペットコールが上手く動作しないとサイトの修正が大変なので、上書きしたパッチをいったん元に戻しました。

ですので、

コード: 全て選択

[[GetField? &parent=`1` &parentLevel=`1` &field=`menutitle`]]
については、後ほどあらためてパッチを上書きして確認してみたいと思います。

また、
[*content:id=7*]
上記の書き方がうまくいかないのは、もしかするとプラグインのPHxを導入されてますでしょうか。その場合は本体のパース処理を先にPHxプラグインが横取りする形で処理するため、そのようになると思います(今回は違うかもしれませんが)
については、おっしゃるようにプラグインのPHxを導入しています。なぜなら、if文を使ったスニペットを使っていて、プラグイン版でないと動作しないからです。

[*content:id=7*]
という書き方はわかりやすく、使いやすいと思いますので、今後はプラグインのPHxを使わない方向でテンプレートを書くことも考えているのですが…。

Re: 1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました

Posted: 2012年10月10日(水) 16:45
by yama
了解です、そちらも修正します。
本体PHxでif文が使えないのは構造的な問題があって難しいのですが、これも今年中には解決する予定です

Re: 1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました

Posted: 2012年10月10日(水) 22:36
by yama
お待たせしました
@INHERITをうまく処理できないバグがもともとあるみたいですが、それもついでに修正できてると思います

Re: 1.0.6J-r7にアップデートしたらGetFieldの動作が変わりました  【解決済み】

Posted: 2012年10月11日(木) 10:05
by hirostraydog
上記パッチを適用したところ、

[[GetField? &docid=`7` &field=`hogehoge`]]
[[GetField? &parent=`1` &parentLevel=`1` &field=`menutitle`]]

ともに、テンプレート変数を取得・表示できました!

いつも迅速な対応に、本当に感謝しております。
ありがとうございます。

今回の件以外でも、また気づいた点がありましたら報告します。

今後ともどうぞよろしくお願いいたします。