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

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

PHxはプラグインで動作タイミングがスニペットコール前のため、値の入っていないプレイスホルダーとかをブランクにしてくれやがります。

コメントアウトの方法はこちら。

[modxでPHxをインストールするとDittoでページネーションできなくなる件]
http://blog.rainyday.jp/modx_list/modx/modxbug.html

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

と毎度の書き出しです。

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


対処:
だったら、AjaxSearchと一緒の対応だ。と判断。
以下の箇所を変更。
/assets/snippets/directresize/phx.parser.class.inc.phpのクラス名とコンストラクタを変更。
11行目:
class PHxParser {

class PHxParser AS {
に。

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

  function PHxParser AS ($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("PHxParser AS ")) include_once(strtr(realpath(dirname(__FILE__))."/phx.parser.class.inc.php", '\\', '/'));
に。

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

    $this->phx = new PHxParser AS ();
に。

PHxParserASと、修正していないPhxのクラス名にしておけば、複数回は読み込まれないだろうという判断です。

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


作成日
2010.03.18 (木)
最終更新日
2014.08.10 (日)
作成者
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