2年間ほったらしかったので、デザインからリニューアルしてやり直そうと思い、
modxのバージョンも0.9.6から1.0.2Jにアップデートした。
その際も色々注意すべきことがあったが、それは後日。
modxで、MTで言うところの<mt:entries>、wordpressで言うところの<?php query_posts() ?>みたいな、
エントリーを集めて表示させるスニペットがdittoだ。
dittoにはpaginationというオプションがあり、
MTのpagebuteプラグインのようにページ分割を簡単に行ってくれる。
PHxはdittoに同梱されている別のスニペットで、
<mt:if>みたいな、条件分岐をditto内で実現させるためのものだ。
modxはMTタグやwordpress関数のようなものがなく、
条件分岐に対して少々弱い(というかphpなどの知識が必要)ため、
ditto内だけではなく、他の場所でも使いたい。
(簡単に言うと、カテゴリによってテンプレートを変えたい、とか)
そのためにはPHxをmodxに改めてインストールする必要がある。
インストール自体は難しくはないが、
dittoとPHxを両方インストールした状態だと、dittoのページ分割機能が働かなくなってしまう。
これが致命的な問題なため、PHxをインストールしないという意見が多い。
dittoのpaginationはPHxとの共存によって、エラーを吐くのではなく、
単にブランクを返している(指定した内容が反映されない)。
つまり、dittoで指定したプレイスホルダの内容を上書きしているか、消去しているか、
その辺の挙動が怪しいとアタリをつけた。
PHxは、インストールする際、「システムイベント」タブの「OnParseDocument」にチェックを入れる。
↓
OnParseDocumentイベントは、
ドキュメントを更新したり保存したりしてdittoなどで指定された構文を解析するタイミングで起きるイベントのため、
asset/plugins/phx/phx.parser.class.inc.php
から、余分なものを消していそうな箇所を探す。
62行目に
// clean up unused placeholders that have modifiers attached (MODx can't clean them)
というコメントがあった。
モディファイアで設定した、使われてないプレイスホルダをクリーンアップする、的なものだ。
つまり、dittoで一度コールされたpaginationのプレイスホルダを、インストールしたPHxがクリーンアップしているらしい。
というわけで、
asset/plugins/phx/phx.parser.class.inc.php
の63~67行目をコメントアウトした。
↓
今のところ、これによる不具合は確認できていないので、
もし他のプラグインとの不具合が現れたら報告する。