PHxを導入すると、JotやらDittoやらおかしくなる。その2 | MODxでハマるありがちな罠と解決法

PHxを導入すると、JotやらDittoやらおかしくなる。その2

PHxはプラグインで動作タイミングがスニペットコール前のため、値の入っていないプレイスホルダーとかをブランクにしてくれやがります。
かといって、その箇所をコメントアウトすると、今度はAjaxSearchのプレイスホルダーがおかしくなるというのを前回書きました。

コメントアウトの方法はこちら。
[modxでPHxをインストールするとDittoでページネーションできなくなる件]

http://blog.rainyday.jp/modx_list/modx/modxbug.html

どうおかしくなるかというと、デフォルトテンプレートだと、+]とか、明らかにプレイスホルダーの残骸が出力されてしまう。

ですので、トレードオフでPHxを取ったのですが、Dittoのページネートが必要になった訳で。

DittoとPHxとAjaxSearchの共存に問題がでるとは。(苦笑

ということで、PHxを改造すると、AjaxSearchが何故おかしくなるか調べてみました。


原因:
AjaxSearchはPHxが導入されていると、AjaxSearch内にあるPHxではなく、追加で導入したPHxのクラスを使う。
AjaxSearchは意図的に空欄となったプレイスホルダーをブランクに置き換えるPHxのロジックを利用しているため、上記でコメントアウトしたが為に、AjaxSearchでのブランクプレイスホルダーの処理がおかしくなった。


対処:
だったら、AjaxSearchに同梱されているphx.parser.class.inc.phpを使わせればいいと判断。
以下の箇所を変更。
/assets/snippets/ajaxSearch/phx.parser.class.inc.phpのクラス名とコンストラクタを変更。
11行目:
class PHxParser {

class PHxParserAS {
に。

17行目:
  function PHxParser($debug=0,$maxpass=50) {

  function PHxParserAS($debug=0,$maxpass=50) {
に。

/assets/snippets/ajaxSearch/chunkie.class.incのPHxParserを読み込んでいる箇所を修正
15行目:
    if (!class_exists("PHxParser")) include_once(strtr(realpath(dirname(__FILE__))."/phx.parser.class.inc.php", '\\', '/'));

    if (!class_exists("PHxParserAS")) include_once(strtr(realpath(dirname(__FILE__))."/phx.parser.class.inc.php", '\\', '/'));
に。

17行目:
    $this->phx = new PHxParser(0,200);

    $this->phx = new PHxParserAS(0,200);
に。

動作確認中ですが、多分これで大丈夫かな。

というか、Dittoも同じ対処にしとけば、PHxと切り離せるんじゃなかろーか。

前回の経緯:
PHxを導入すると、JotやらDittoやらおかしくなる


作成日
2010.02.26 (金)
最終更新日
2010.02.26 (金)
作成者
Takayuki Hirosawa
  • speed_fish 引っ越ししてからつなげていなかったとても古いnetgearのnas。今日つなげようとしたらlan経由で全くつながらず。windows10が勝手にsmb1を切り捨ててたと判明するまでに3時間。httpでもpingでもつながるのにos… https://t.co/Ejd7om16t0 2018-04-24 11:41:09
  • speed_fish modxからevoが切り離しかー。まあrevoとはもう別物感溢れてたし良いんじゃないでしょうか。やりやすくなるといいなー。 2017-04-28 20:33:09
  • speed_fish Chromeの57から頻発している、ERR_BLOCKED_BY_XSS_AUDITOR。試してみたけど、hidden含め入力項目にJavaScriptが入っても発生。HTTPS化していないフォームはまあ当然発生かな。 2017-04-10 18:00:57
  • speed_fish modxサイトをcloudflare化でeFormで引っかかる。中身みたらsite_urlでリファラーチェックしてました。ssl flexibleを使おうとしてたので、eFormを改造。パラメータにsiteurlを追加しましたとさ。#modx #cloudflare #eform 2017-03-04 00:44:09
  • speed_fish メモメモ。MODxでAMP対応するスニペット。 GETのURLが気に食わないのでリライトかな。 https://t.co/Oa9qzQ5dOr 2017-02-03 01:10:54