• PHxをインストールしている場合のJotの挙動について#

  • MEGU Reply #1, 4 years, 10 months ago

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

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

    Jot では、以下のようにコールして、
    [!Jot? &output=`0` &placeholders=`1`!]

    ドキュメントのいずれかの場所に以下のように記述すると
    [+jot.html.comments+]
    [+jot.html.form+]


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

    この時、PHxを無効にすれば、各ブロックを出力できます。
    あるいは、PHxが有効でも、以下のように
    [[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

    解決策はあるでしょうか。。?


  • MEGU Reply #2, 4 years, 10 months ago

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

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

    例にも依るとは思うのですが、PHxが有効な状態で、例えば、以下のようにスニペットコールをして
    [[Jot? &validate=`content:ã³ã¡ã³ãå¿é ,title:ã¿ã¤ãã«å¿é :#[abc]#`]]

    (ドキュメントのキャッシュは不可)

    で、表示されるコメントフォームのsubmitボタンをクリックすると、以下のようにエラーが出ます。
      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のエラーログは以下のようです。
    [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


  • MEGU Reply #3, 4 years, 10 months ago

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


  • MEGU Reply #4, 4 years, 10 months ago

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

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

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

    PHx導入時、eFormで問題が出るのは、別の問題だと思いますが。。


  • ar Reply #5, 4 years, 10 months ago

    Reply
    こいつ、私もハマりました。
    私の場合は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内蔵以外のスニペットのプレースホルダで使いたい人にはダメですな。
    ちょっと今はソースを追ってる暇があまり無いので、あとは偉い人にお任せ。


  • MEGU Reply #6, 4 years, 10 months ago

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

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

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

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


  • ar Reply #7, 4 years, 10 months ago

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

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

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


  • MEGU Reply #8, 4 years, 10 months ago

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

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


  • MEGU Reply #9, 4 years, 9 months ago

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

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

    ※テンプレート/ドキュメントごとにPHxを無効にする方法はこちら
    http://modxcms.com/forums/index.php/topic,16867.0.html