MODxで複数ドメイン・複数サイトを管理する方法と問題点

MODxでの複数ドメイン・複数サイトの管理方法に悩むからの続きです。

MODxフォーラムで再び情報収集

さすがに疲れてきたので、少し休憩して、再度、MODxフォーラムで情報収集していると、SubSites | XREA において1つの MODx で複数のサイトを管理したい (→解決)のリンク先に見落としがあったことに気づきました。見落としていたのは、[Hack] Subsites - (Solve Friendly Alias Path)の続きのページです。何気に、MODxのフォーラムはページのリンクが見落としやすいので注意が必要ですね。

ページをたどっていくと、0.9.6用のzipファイルがあったので、ダウンロードして0.9.6.1p2のファイルと差分を取ってみると問題なく使えそうです。URI関係を複数ドメイン・複数サイトに対応させるためのハックのようです。

シンボリックリンクの設定

前回の試行錯誤は忘れて、全て最初からやり直すことにします。まず、シンボリックリンクを設定し直します。リンクの仕方は前回と同じですが、今回は.htaccessは修正しません。

SubSitesハックの導入

ダウンロードしたSubSitesハックのファイルを、MODxのインストールディレクトリに上書きします。「ツール」→「MODx設定」→「サイト」から「Subsites」の「Enabled」にチェックを入れ、ドメインの設定を次のように入力しました。

DomainA.com 1 2 3

設定するのはMODxのインストール先を除いたドメインで、左から順にドメイン、スタートページのドキュメントID、エラーページのドキュメントID、権限外告知のページのドキュメントIDです。さらにドメインを増やす場合は、半角カンマ区切りで同様に入力していけばいいようです。

複数ドメイン・複数サイトに対応

さっそく、「http://DomainA.com」にアクセスしてみると、見事、サイトA用のトップページが表示されました。ドキュメントリンクタグもドメインに合わせてURIが出力されています xD

前回、リソースパスやファイルマネージャパスを書き換える必要があると書きましたが、各ドメインはMODxのインストール先と同期しているので、リソースパスやファイルマネージャパス下に各ドメイン用のディレクトリを作るだけで済みそうです。もし、これらも分けたい場合には、前回のSubSites/SubDomainsプラグインと同様の方法、つまり、プラグインでOnWebPageInitイベントをフックして動的に書き換えてやれば良いです。

複数サイトをまとめた1つのサイトを構築したい場合で、細かいことを気にしない場合はここまでの方法でほぼ問題なさそうです。

SubSitesハックの問題点

まったく異なるサイトを1つのMODxで管理したい場合は、この方法では少し問題があります。あるドメインから、異なるドメインに属するドキュメントにアクセスできてしまいます。例えば、サイトA(「DomainA.com」)にエイリアス「SiteA」というドキュメントがあった場合、サイトB(「DomainB.com」)から「http://DomainB.com/SiteA/」でアクセスできてしまいます。

さらなる改善の検討

複数ドメイン・複数サイトの管理ができることはわかったので、残る問題はURI関係のみです。できれば、この問題も解決したいです。とりあえずは後回しにしますが、SubSitesハックを修正・機能拡張して、SEO Strict URLsプラグインも複数ドメイン・複数サイトに対応できるといいなあと思っています。

複数ドメイン・複数サイトを管理する場合、共有するチャンクの数が膨大になることが予想できるので、チャンクをハッシュのように扱えるスニペットも作っておこうと思います。

チャンク: MODx
name:MODx
desc:CMS and PHP Application Framework
uri:http://modxcms.com/
community:http://modxcms.com/forums/
ドキュメント
<table>
  <caption>[[HashChunk? &chunk=`MODx` &key=`name`]]の概要</caption>
  <tbody>
    <tr>
      <th scope="row">名前</th>
      <td><a href="[[HashChunk? &chunk=`MODx` &key=`uri`]]">[[HashChunk? &chunk=`MODx` &key=`name`]]</a></td>
    </tr>
    <tr>
      <th scope="row">説明</th>
      <td>[[HashChunk? &chunk=`MODx` &key=`desc`]]</td>
    </tr>
    <tr>
      <th scope="row">コミュニティ</th>
      <td><a href="[[HashChunk? &chunk=`MODx` &key=`community`]]">[[HashChunk? &chunk=`MODx` &key=`community`]]</a></td>
    </tr>
  </tbody>
</table>
出力例
<table>
  <caption>MODxの概要</caption>
  <tbody>
    <tr>
      <th scope="row">名前</th>
      <td><a href="http://modxcms.com/">MODx</a></td>
    </tr>
    <tr>
      <th scope="row">説明</th>
      <td>CMS and PHP Application Framework</td>
    </tr>
    <tr>
      <th scope="row">コミュニティ</th>
      <td><a href="http://modxcms.com/forums/">http://modxcms.com/forums/</a></td>
    </tr>
  </tbody>
</table>

あまりいい例ではないですが、こんな感じにできると、チャンクをすっきり管理できそうな気がしています。これはすぐできそうですね。

コメント (0)

この記事へのコメントはまだありません。

コメントフォーム

トラックバック (1)

XREA 1つのMODxで複数のサイトを管理

リニューアルを受け持ったお客様のサイトは、既存のサイトに加えて2つサブドメインの新規サイトを作ることになっています。 それぞれ10ページ程度のサイトなので、別MODxをインストー…

この記事のトラックバックURI
http://dxd8.com/archives/61/trackback/
この記事のURI
http://dxd8.com/archives/61/