ページ 11

MODX1.0.12J-r1でルート直下のリソースがプレビュー表示できない。

Posted: 2014年3月14日(金) 22:38
by ethmo
-----
ご利用のサーバ:MAC OSXサーバー
MODXのバージョン:1.0.12J-r1
PHPのバージョン:5.3.26
MySQLのバージョン:5.0.8
ブラウザ:Safari
-----

こんにちは、いつも参考にさせていただいております。

MODX1.0.12J-r1で、ルート直下のリソースがプレビュー表示できない現象が出て困っております。

ルート直下で、
「コンテナとして扱う」をチェックしたリソース、及び、
サブリソースを持たないウェブページの両方とも、プレビューで表示されません。
直接URLを指定しても、404 Not Foundになります。

ただし、コンテナの下のサブリソースは表示されます。
(ルート直下に404 Not Fondページを作っても、認識されなかったので、コンテナの下に入れて使っている状況です。)

サイトはフレンドリーURLを使用しています。
(現象が出てから、フレンドリーURLの使用を一旦止めてみましたが、id指定でも同じ現象でした。)

作り始めの内は表示されていた気がしたので、
同じサーバー条件下で、テストサイトを立ち上げて、似たような感じでページを作っていった所、
リソース数(10)ぐらいでは、こうした現象は出ず、普通に使えています。

現象の出たサイトは、二つあるのですが、リソース数はそれぞれ(37)と(57)です。
リソース数の問題なのでしょうか?

後は、ウェブリンクを多用しているのも特徴です。
ウェブリンク(alias)
 |--サブリソース(index.html)
 |--サブリソース2(xxxxx.html)

ウェブリンク(alias2)
 |--サブリソース(index.html)
 |--サブリソース2(yyyyy.html)

※このような構造を10コ以上使用。

このような使い方がいけないのでしょうか?


また、問題のサイトは、wayfinderを使っているので、
一応、下記のパッチも当ててみましたが、表示されない現象は変わりませんでした。
http://forum.modx.jp/viewtopic.php?f=7&t=1245#p6971

テストの方は、まだwayfainderはどこにも使っていません。

プログラム寄りの知識があまりないので、的外れな試し方、使い方をしているのかもしれません。

良いアドバイスがあれば、お聞かせください。

尚、両方ともプロトタイプ作成用に使っているので、運用上の問題はほとんどなく、
そういうものだと諦めて、コンテナかウェブリンク扱いで、
サブリソースだけを使用するようにしてもなんとかなりますが、
今後も同じような現象が出るかもしれないので、
できれば出ない方が作り易いので、解決してゆけたらと考えています。

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

Re: MODX1.0.12J-r1でルート直下のリソースがプレビュー表示できない。

Posted: 2014年3月18日(火) 09:41
by yama
https://github.com/modxcms-jp/evolution ... stable.zip
上記の1.0.12J-r2リリース候補でアップデートしてみると改善されるでしょうか?

Re: MODX1.0.12J-r1でルート直下のリソースがプレビュー表示できない。

Posted: 2014年3月18日(火) 11:35
by ethmo
yamaさん、ご返信いただきありがとうございました。
yama さんが書きました:https://github.com/modxcms-jp/evolution ... stable.zip
上記の1.0.12J-r2リリース候補でアップデートしてみると改善されるでしょうか?
さっそくアップデートしてみたのですが、変化なしでしたので、
もう一度、自分の作ったリソースや設定と小一時間にらめっこしてみました。

そうしましたら原因がわかりました…
…結論からいうと、自分のうっかりミスでした。
お騒がせしてすみません(><)

実はリソースの中で、HOMEだけが表示されていたのですが、
そのことをすっかり見落としておりました。

HOMEとそれ以外では唯一テンプレートだけが違っていたので、
テンプレートの中の違う部分を確かめていった所、
[*parent:pagetitle*]という指定があり、
これを削除したらルート直下でもプレビュー表示されるようになりました。
よくよく考えてみれば、ルート直下のリソースには親はないので、
parentがあると駄目…ということなんですよね。

激しくうっかりしておりました。
お恥ずかしい限りです。

この質問は、「トラブル全般・設定・操作方法に関する質問」に移動すべきでしょうか?
あまりバージョンには関係ないですよね?

Re: MODX1.0.12J-r1でルート直下のリソースがプレビュー表示できない。

Posted: 2014年3月18日(火) 12:32
by yama
http://140318123228-954.evo.demo.modx.j ... frame=main
試してみました。たしかにNot foundになりますね。もし修正できそうであれば修正してみます。

Re: MODX1.0.12J-r1でルート直下のリソースがプレビュー表示できない。  【解決済み】

Posted: 2014年3月18日(火) 12:45
by yama
manager/includes/extenders/phx.parser.class.inc.php
上記のファイルをテキストエディタで開いて、

コード: 全て選択

if(preg_match('@^[0-9]+$@',$target)) $mode='id';
上記の記述を探してみてください。

コード: 全て選択

if(preg_match('@^[1-9][0-9]*$@',$target)) $mode='id';
このように書き換えます。
こうすると、親の情報が存在しない場合のエラーを回避し、代わりに自分自身の情報を返すようになります。
この対応で特に問題なければ次のリリースに含めます。

Re: MODX1.0.12J-r1でルート直下のリソースがプレビュー表示できない。

Posted: 2014年3月18日(火) 14:26
by ethmo
yamaさん、ありがとうございます!

コードを書き換えたところ、プレビュー表示されるようになりました。
大変たすかりました。

ところで、
[*parent:pagetitle*]で親のリソースが存在しない場合は自分自身の情報を返すようになるとのことですが、
コード書き換え後は、ホーム(id=1)のpagetitleが表示されています。
本来は、表示しているリソースのpagetitleが返されるはずですか?

Re: MODX1.0.12J-r1でルート直下のリソースがプレビュー表示できない。

Posted: 2014年3月18日(火) 14:32
by yama
もしかするとエイリアス名が「1」になっているパターンですね。後ほど再修正します