テンプレート変数で@SELECTを使用した際の挙動について

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

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by hirostraydog »

「:width」と「:height」で検索して該当行を抜き出してみました。
添付ファイルをご参照ください。

お忙しいところ恐れ入りますが、どうぞよろしくお願いいたします。
添付ファイル
「width」「height」.zip
(3.86 KiB) ダウンロード数: 829 回
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by yama »

photoLeft1などの名前のチャンク・テンプレート変数があるようですね。現在は使ってないとのことですが、どこかで呼び出されている気がします。

コード: 全て選択

if(empty($output)) return;
phx:width・phx:heightスニペットの先頭に上記の行を挿入すると状態は変わるでしょうか?

PHxプラグインでif文を利用していない場合は、コア内蔵のPHx機能を使うほうが副作用が起きにくいです。PHxプラグインを無効にすると自動的にコアの機能が有効になります。
hirostraydog
メンバー
メンバー
記事: 26
登録日時: 2012年9月05日(水) 13:25

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by hirostraydog »

yama さんが書きました:現在は使ってないとのことですが、どこかで呼び出されている気がします
使っていないつもりでしたが、私の思い違いなのかもしれませんね。

現在、本番環境しかなく、再度1.0.7J-r1にして検証、万一トラブルが発生した際の処理をするのには、申し訳ないのですが今日は時間がありません。

後日、本番環境またはテスト環境を作って、1.0.7J-r1にアップデートして、新しいコードを追加して試してみて、結果をご報告します。

ちなみに、現在の1.0.6J-r7に新しいコードを挿入してみましたが、特に変化はないようです。
yama さんが書きました:PHxプラグインでif文を利用していない場合は、コア内蔵のPHx機能を使うほうが副作用が起きにくいです。PHxプラグインを無効にすると自動的にコアの機能が有効になります。
実は、PHxプラグインでif文を使用しています。以前から、if文を使用するのをやめることも検討しているのですが…。
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by yama »

phx:width・phx:heightスニペットをリネームして一時的に無効にしてみて、変化があるかどうかでも切り分けできると思います。
document.parser.class.inc.zip
(29.05 KiB) ダウンロード数: 794 回
それとログの情報をもう少し具体的に出せるように修正を加えてみました。
上記のファイルを解凍してmanager/includes/ディレクトリに上書きしてみて、エラーログの内容を教えていただければ何か分かるかもしれません。
hirostraydog
メンバー
メンバー
記事: 26
登録日時: 2012年9月05日(水) 13:25

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by hirostraydog »

アドバイスや新しいファイルをいただき、本当にありがとうございます。

ただ今、http://modx.jp/docs/admin/move.html を参考に、本番環境のサーバから別サーバに、ファイル一式やSQLバックアップデータを移して、テスト環境を構築中です。

テスト環境が構築できましたら、これまでいただいたアドバイスやファイルを活かしてテストしてみます。
hirostraydog
メンバー
メンバー
記事: 26
登録日時: 2012年9月05日(水) 13:25

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by hirostraydog »

ご報告が遅くなってしまい、申し訳ありません。

下記の条件で、テスト環境を作って試してみました。
また、Evoのバージョンは1.0.8Jにしました。

サーバ:さくらのマネージドサーバ Atomプラン
PHPのバージョン:5.2.17
MySQLのバージョン:5.1.41
ブラウザ:Chrome

テンプレート変数の「入力時のオプション」で、@SELECTを用いて値を取得できなかった件は、
http://forum.modx.jp/viewtopic.php?f=32&t=1045#p5875
のパッチを適用したら、値が取得できるようになりました。

また、
http://forum.modx.jp/viewtopic.php?f=32 ... t=10#p5895
も、manager/includes/ディレクトリに上書きしました。

今回のテスト環境では、
「PHxプラグインを有効(内蔵PHxを無効)」
「phx:width・phx:heightスニペット有効(if(empty($output)) return;を挿入、http://forum.modx.jp/viewtopic.php?f=32 ... t=10#p5893)」
の状態で、一部を除き、問題なくページが表示されるようになりました。

しかし、
http://forum.modx.jp/viewtopic.php?f=32&t=1045#p5886
で触れたように、Dittoの挙動に問題があるようです。

【問題1】

[[Ditto? &parents=`[*parent*]` &hideFolders=`1` &depth=`2` &filter=`hoge1,Yes,2` &extenders=`tagging` &tagData=`hoge2` &tags=`hoge3` &tagDelimiter=`,` &sortDir=`DESC` &sortBy=`hoge4` &tpl=`hoge5` &noResults=`hoge6`]]

上記のスニペットコールを使用して、hoge2の中に値が複数ある場合、意図した数のリソースが取得・表示できないのです。

(例)
リソースA→テンプレート変数hoge2の内容=hoge3→取得・表示できる。
リソースB→テンプレート変数hoge2の内容=hoge3,dataA,dataB,dataC…→取得・取得できない。

また、上記のスニペットコールを複数使用したページでは、以下のようなエラーメッセージがブラウザに出て、ページが表示されません。

Fatal error: Maximum execution time of 30 seconds exceeded in /home/sakurahiroshi/www/assets/snippets/ditto/classes/ditto.class.inc.php on line 824

または、

Fatal error: Maximum execution time of 30 seconds exceeded in /home/sakurahiroshi/www/assets/snippets/ditto/classes/ditto.class.inc.php on line 137


【問題2】

[[Ditto? &parents=`hoge1` &hideFolders=`1` &depth=`4` &extenders=`tagging` &tagData=`hoge2` &tags=`hoge3` &tagDelimiter=`,` &tpl=`hoge4` &noResults=`hoge5`]]

上記のスニペットコールで、1.0.6J-r7までは「hoge2にhoge3を含むリソース」が呼び出されていましたが、「hoge2にhoge3を含まないリソース」が呼び出されてしまいます。

※【問題1】【問題2】とも、管理画面のレポート→イベントログにはレコードはありません。

脆弱性の問題などもあり、お忙しいかと思いますが、対処法などを教えていただけますと、本当にありがたいです。
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by yama »

了解です。こちらで同等の状況を作って試してみます。(リソース数はいくつくらい作るとよいでしょうか?)
hirostraydog
メンバー
メンバー
記事: 26
登録日時: 2012年9月05日(水) 13:25

Re: テンプレート変数で@SELECTを使用した際の挙動について

投稿記事 by hirostraydog »

早速のご対応、本当にありがとうございます。
yama さんが書きました:(リソース数はいくつくらい作るとよいでしょうか?)
当方のサイトを具体的に説明します。

◆「ブランド紹介ページ」(約200件)と「ショップ紹介ページ」(約1000件?)を掲載。
◆「ショップ紹介ページ」には「取扱ブランド」をテンプレート変数で入力。
◆上記テンプレート変数は「ブランド紹介ページ」のpagetitleを@SELECTで値を取得して、そのショップの「取扱ブランド」にチェックを入れる。
◆複数のブランドを取り扱っているショップが多数存在する。

「あるブランドの取扱ショップを都道府県別に一覧表示する」といった処理を、上記のDittoでおこなっています。

…といったところなのですが、ご参考になるでしょうか?
hirostraydog さんが書きました:リソースA→テンプレート変数hoge2の内容=hoge3→取得・表示できる。
リソースB→テンプレート変数hoge2の内容=hoge3,dataA,dataB,dataC…→取得・取得できない。
という状況は、「ある県内にあるブランドAの取扱ショップを一覧表示する」ページで発生しています。

また、
hirostraydog さんが書きました:上記のスニペットコールを複数使用したページでは、以下のようなエラーメッセージがブラウザに出て、ページが表示されません。
という状況は、「ブランドAの取扱ショップを都道府県別に一覧表示する」ページで発生しています。
このページには、都道府県別に計47のDittoスニペットコールを書いています。

また何かご不明な点がございましたら、ご連絡ください。

お手数おかけいたしますが、どうぞよろしくお願いいたします。
返信する