MODxをサブドメイン対応する方法

CMS(CMF)のMODxは、1つのスクリプトを共有して、複数のサイトを稼動させることが出来ません。そのため、修正をしない方法では、サブドメイン毎にMODxを設置するか、DBを共有したままプラグインによりスタートページを振り分けるもの(Subsites/subdomains 0.1)に留まっています。

それぞれ一長一短あります。前者はサブドメイン分のMODxを設置するため、リソース増加してしまいます。プラグインも共有出来ません。しかし、全てのリソースが分離されている分、メンテは容易です。後者は単一のMODxをおいて置けばいいのでリソースは少なくてすみます。反面、DBを共有しているので、ページ数が増えメンテが困難になります。また、閲覧者が適当なページIDをリクエストしたときに、隠しておきたいはずの他サブドメインページが表示されてしまう問題も残ります。

そこで私は第3の方法を提案したいと思います。物理的なファイルリソースを共有したまま、DBとキャッシュを分離する方法です。このケースで言うDBとは、コンテンツ、スニペット、プラグイン、MODxの設定です。

この方法はMODxのコアスクリプトを変更します。本体がバージョンアップした際には、私のリリースを待つか自分で再修正をするしかありません。その代わり、MODxコアをバージョンアップしない限り、あらゆる問題に対応できる利便性が売りです。

方法は至極単純、インストール時に出力されるconfig.inc.phpをサブドメインごとに分ければいいのです。ただし、これだけでは不十分で、不具合が多発します。というのも、cacheディレクトリの中身をMODxが頻繁に参照するからです。ここに、MODxの設定の一部もなぜか含まれています。生成されるキャッシュをそれぞれサブドメインごとに分別されるように修正してください。

そんなわけで、私が改造したMODxを公式にポストしておきました。

日本語サポートスレッド本サポートスレッドも活用してください。

Subsites the MAD [HACK] ver.2.0