MODx PHxプラグイン placeholder問題修正

標準

MODxには、PHxという出力変数をゴニョゴニョするプラグインがあります。
PHx – MODx Wiki

だた、このプラグインを導入してしまうとスニペット等で定義したプレイスホルダーの値が参照できなくなります。
(例: dittoのページネーション処理等)

原因は、PHxプラグインの実行時に未定義のプレイスホルダー値が削除されるためです。(スニペットの実行は、PHxプラグインが実行されるOnParseDocumentイベントの後に行われるため、PHx実行時には、スニペットで定義されるべきプレイスホルダー値は未定義の状態。)

というわけで、未定義のプレイスホルダー値を削除している部分をコメントアウトしてしまいます。

phx.parser.class.inc.php (PHxParser::Parse())の65行目付近をコメントアウトします。

		// clean up unused placeholders that have modifiers attached (MODx can't clean them)
		preg_match_all('~\[(\+|\*|\()([^:\+\[\]]+)([^\[\]]*?)(\1|\))\]~s', $template, $matches);
    	if ($matches[0]) {
			#$template = str_replace($matches[0], '', $template); // < - comment out this line
			$this->Log("Cleaning unsolved tags: \n" . implode("\n",$matches[2]) );
		}

なお、PHxのバージョンは2.1.3にて確認しています。

コメントを残す

Page optimized by WP Minify WordPress Plugin