Sep 07, 2008, 01:40 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
modxcms.com web
  MODxCMS.com   Forums   Help Login Register  
News:Donate to MODx: Donations
Pages: [1]   Go Down
  Print  
Author Topic: PHxをインストールしている場合のJotの挙動について  (Read 2295 times)
0 Members and 1 Guest are viewing this topic.
MEGU
Moderator
*
Posts: 767



WWW
« on: Jul 03, 2007, 04:04 AM »

こんにちは。よろしくお願い致します。

以下の問題(?か仕様かはまだわからないのですが)が、
見つかりましたので、ご報告します。

Jot では、以下のようにコールして、
Code:
[!Jot? &output=`0` &placeholders=`1`!]
ドキュメントのいずれかの場所に以下のように記述すると
Code:
[+jot.html.comments+]
[+jot.html.form+]

任意の場所に任意のブロックを出力させることができますが、PHxをインストールした
状態だと、上記のように書いてもプレイスホルダの値が出力されません。

この時、PHxを無効にすれば、各ブロックを出力できます。
あるいは、PHxが有効でも、以下のように
Code:
[[Jot? &output=`0` &placeholders=`1`]]
cache-style でコールすると、各ブロックが出力されます。

しかし、Jotコールをcache-style で行う場合、ドキュメントのキャッシュを
「不可」にする必要があります。

…という問題にはまっていました。。
私としては、ドキュメントのキャッシュは「可」で運用したくて、かつPHxも使いたいのです。
そして、「&output=`0` &placeholders=`1`」を指定して、プレイスホルダで
各ブロックを出力したいです。

Jotのフォーラムには投稿したんですが。。
http://modxcms.com/forums/index.php/topic,12828.msg103702.html#msg103702

解決策はあるでしょうか。。?
« Last Edit: Jul 03, 2007, 04:08 AM by MEGU » Logged
MEGU
Moderator
*
Posts: 767



WWW
« Reply #1 on: Jul 04, 2007, 06:55 AM »

もうひとつ問題点がありました。

JOTは、通常、パラメータで「&validate=`vericheck:必須:#[abc]#」とかやると、
正規表現で、チェックをかけられるのですが、PHxを導入していると、この正規表現の中に
「[」「]」を使えないのです。

例にも依るとは思うのですが、PHxが有効な状態で、例えば、以下のようにスニペットコールをして
Code:
[[Jot? &validate=`content:コメント必須,title:タイトル必須:#[abc]#`]]
(ドキュメントのキャッシュは不可)

で、表示されるコメントフォームのsubmitボタンをクリックすると、以下のようにエラーが出ます。
Code:
  Error: preg_match() [function.preg-match]: Empty regular expression
  Error type/ Nr.: Warning - 2
  File: /ドメインなど/assets/snippets/jot/jot.class.inc.php
  Line: 781
  Line 781 source: if (!preg_match($re,$value))

PHxが無効になっていれば、問題ないんですけど。。
プログラムに詳しい方ならどこをいじればよいか、または正規表現の書き方を
変えるとかすればよい、等、おわかりになるのでしょうか。。
(私自身、プログラムも正規表現も詳しくないんです…)。

もし、解決方法などわかれば、教えて頂ければ幸いです。
よろしくお願い致します。
---*---*---*---*---*---
PHPのエラーログは以下のようです。
Code:
[04-Jul-2007 21:02:18] PHP Warning:  Unknown(): Unable to load dynamic library
'/usr/local/lib/php/extensions/no-debug-non-zts-20020429/gd.so' - Cannot open
"/usr/local/lib/php/extensions/no-debug-non-zts-20020429/gd.so" in Unknown on line 0

フォーラム投稿:
http://modxcms.com/forums/index.php/topic,7522.msg103954.html#msg103954
« Last Edit: Jul 04, 2007, 10:30 PM by MEGU » Logged
MEGU
Moderator
*
Posts: 767



WWW
« Reply #2 on: Jul 06, 2007, 03:25 AM »

経過報告です。
PHxは、やはり、別のスニペットにも影響しているようです。
eFromでも問題があがっているとの報告がありました。
解決策は見つかっていません。
Logged
MEGU
Moderator
*
Posts: 767



WWW
« Reply #3 on: Jul 10, 2007, 10:03 PM »

こんにちは。
ちょっと、私、誤解していたんですが。。

Jot、Ditto、maxigallery、にはあらかじめ、PHxファンクションが組み込まれているんで、
これらのスニペットでPHxを利用したいのならば、別途、PHxプラグインを導入しなくても
いいんですね。。(ファイル構成をみていて今日気がついたんですが…)。
 ↑
PHxの解説の方にもその旨は追記しておきました。

ということで、Jotで、PHxプラグインを導入しているときに、問題が出るのは、
なにかの衝突が起こっているのかも知れないですね。

PHx導入時、eFormで問題が出るのは、別の問題だと思いますが。。
Logged
ar
Jr. Member
*
Posts: 2


« Reply #4 on: Jul 21, 2007, 01:25 PM »

こいつ、私もハマりました。
私の場合はDittoなのですが、paginate=`1`にしたときのプレースホルダが全滅という悲しい事態に。
Ditto自身はPHx内蔵ですが、TVの整形とかで便利なのでPHxを入れちゃいまして。

自分の場合はプラグインPHxでプレースホルダへの適用は必要なかったので殺して逃げました。
phx.parser.class.inc.phpのfunction Parseにある
  preg_match_all('~\[(\+|\*|\()([^:\+\[\]]+)([^\[\]]*?)(\1|\))\]~s', $template, $matches);

  preg_match_all('~\[(\*|\()([^:\[\]]+)([^\[\]]*?)(\1|\))\]~s', $template, $matches);
として+のマッチを削除します。

でもPHx内蔵以外のスニペットのプレースホルダで使いたい人にはダメですな。
ちょっと今はソースを追ってる暇があまり無いので、あとは偉い人にお任せ。
Logged
MEGU
Moderator
*
Posts: 767



WWW
« Reply #5 on: Jul 24, 2007, 02:05 AM »

こんにちは。arさん。どうもありがとうございます。

なるほど、Dittoでページナビゲーションを入れる場合も、
ドキュメントにプレイスホルダを書きますが、それが表示されない
と言うことなのですね。。

対処法もありがとうございます。
Quote
でもPHx内蔵以外のスニペットのプレースホルダで使いたい人にはダメですな。

確認させて頂ければ嬉しいのですが、これは、たとえば、
[*introtext:limit=`40`*](ドキュメント変数を使った場合)といった使い方なら平気という意味です...?
Logged
ar
Jr. Member
*
Posts: 2


« Reply #6 on: Jul 25, 2007, 03:59 PM »

Quote
確認させて頂ければ嬉しいのですが、これは、たとえば、
[*introtext:limit=`40`*](ドキュメント変数を使った場合)といった使い方なら平気という意味です...?

プレースホルダのみ殺してますので、ドキュメント変数は問題ありません。

しかしながらこの方法もMaxiGallery等の一部のプレースホルダが展開されないという問題が出てボツとなりました。
なので、使用しないようお願いします。
さすがにテキトーすぎでした。反省。
ちゃんと追わないとダメですねー。
Logged
MEGU
Moderator
*
Posts: 767



WWW
« Reply #7 on: Jul 26, 2007, 12:57 AM »

こんにちは。ありがとうございます。
Quote
しかしながらこの方法もMaxiGallery等の一部のプレースホルダが展開されないという問題が出てボツとなりました。

私の方でも、試してみました。Jotですが、コードがそのまま出てきちゃう部分がありました。
なんとか使えるようになるといいですよね。。テンプレートごとにPHxの有効無効を切り替えられる
とかでもいいんですけど。。
Logged
MEGU
Moderator
*
Posts: 767



WWW
« Reply #8 on: Jul 31, 2007, 09:49 PM »

こんにちは。
個別の問題についての回避策が出ているようです。
Dittoでページナビゲーション用のプレイスホルダで上手く値を
表示できない場合の回避策が出ています。

それとチャンクのなかで[*変数タグ*]が利用できない場合の
回避策(たぶん...)がでています。
http://modxcms.com/forums/index.php/topic,7522.msg107144.html#msg107144

※テンプレート/ドキュメントごとにPHxを無効にする方法はこちら
http://modxcms.com/forums/index.php/topic,16867.0.html
« Last Edit: Jul 31, 2007, 10:02 PM by MEGU » Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP

Copyright © 2005-2008 MODxCMS, All rights reserved. Contact Us
Styles by ziworks.com

Powered by SMF 1.1.4 | SMF © 2005, Simple Machines LLC

Valid XHTML 1.0! Valid CSS!