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

質問全般・改善要望
返信する
hirostraydog
メンバー
メンバー
記事: 25
登録日時: 2012年9月05日(水) 13:25

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

投稿記事 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`]] 
どなたかのお役に立てば幸いです。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 by yama »

了解です。のちほどパッチを作りますので確認いただけると助かります。
細かい部分をどんどん整理しているのですが、イレギュラーな処理でたまたま動作していた場面がわりと多い感じです。
hirostraydog
メンバー
メンバー
記事: 25
登録日時: 2012年9月05日(水) 13:25

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

投稿記事 by hirostraydog »

早速のご対応、ありがとうございます!

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

どうぞよろしくお願いいたします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 by yama »

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

[*content:id=7*]
上記の書き方がうまくいかないのは、もしかするとプラグインのPHxを導入されてますでしょうか。その場合は本体のパース処理を先にPHxプラグインが横取りする形で処理するため、そのようになると思います(今回は違うかもしれませんが)
添付ファイル
getfield.inc.zip
(1.17 KiB) ダウンロード数: 373 回
hirostraydog
メンバー
メンバー
記事: 25
登録日時: 2012年9月05日(水) 13:25

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

投稿記事 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を使わない方向でテンプレートを書くことも考えているのですが…。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 by yama »

了解です、そちらも修正します。
本体PHxでif文が使えないのは構造的な問題があって難しいのですが、これも今年中には解決する予定です
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 by yama »

お待たせしました
@INHERITをうまく処理できないバグがもともとあるみたいですが、それもついでに修正できてると思います
添付ファイル
getfield.inc.zip
(1.18 KiB) ダウンロード数: 399 回
hirostraydog
メンバー
メンバー
記事: 25
登録日時: 2012年9月05日(水) 13:25

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

投稿記事 by hirostraydog »

上記パッチを適用したところ、

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

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

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

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

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