プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

擬似マルチサイトの設定について

Joomla! 2.5 を使って、一部のコンテンツだけ異なるデザインで表示させたくなりました。要するに、ドメインは同じで異なるテンプレートで趣旨の異なるコンテンツを表示させたい、ということです。動機は、コンテンツを増やすことが出来るとか、管理を一つにまとめられる、といったところです。

ちょっとネットで調べると、どうもこういう機能のことを、擬似マルチサイト、というそうです。

 

(参考)

Joomlaのマルチサイトと擬似マルチサイトの違い

 

じゃあ、実際にどう設定するのかを調べてみると、Joomla! 2.5/3.x だと標準の機能で擬似マルチサイトを構築できて、Different Templates for Different Joomla Pages にやり方が載っていました。

 

この方法を使って、擬似マルチサイトを作成してみたので、その作業をメモ書きにまとめておきます。
 

異なるテンプレートを使う方法

参考先のサイトに載っているので改めて書くのもなんですが、テンプレートの適用はメニューアイテム単位で行われる、ということだそうです。

 

『エクステンション』→『テンプレート管理』を表示して、★印が付いている『標準』に指定されているテンプレートを見ると、『メニューの割り当て』の部分に何もチェックが入っていない状態になっています。

 

 

一方、標準以外のテンプレートは『メニューの割り当て』に適用したいメニューアイテムを指定することになります。
 

一部のメニューを別のテンプレートに割り当て

では、一部のメニューを別のテンプレートに割り当ててみます。

Joomla!インストール時に入っている『Atomic - Default』テンプレートを選択して、メニューの割り当てで、『最新情報』を選択します。

 

 

保存すると、下図のように、『割り当て』欄にチェックが入った状態になります。

 

 

実際のサイトを見てみます。

設定前

 

設定後

 

 

このように、最新情報を表示させた際のテンプレートが変化していることがわかります。

 

擬似マルチサイトを作る

これで、メニューアイテム単位でテンプレートを変えることが出来るようになりました。

しかし、メニューのない単純なページが表示されただけで複数サイトになりました、とはいえないので、テンプレート別にメニューを用意して、複数サイトのように振舞わせたいと思います。

 

以後、今回追加する別テンプレートで表示される部分(擬似サイト)のことを、『追加サイト』と呼ぶことにします。『追加サイト』のテンプレートは、Joomla!インストール時に入っているAtomic - Default を使用するものとします。また、追加サイト以外の既存の部分は、既存サイトのように呼ぶことにします。

 

メニューを作成

追加サイト用にメニューを作成します。

メニューは、『メニュー』→『メニュー管理』→『新規』を選択すれば、作成できます。ここでは、とりあえずバスロックメニューという名称にしています。

 

 

(実は、前節の画面例からわかるように、既に、メインメニュー以外に、バスロックメニューという追加サイト用メニューを作ってありました。メニューアイテムも割り当て済みでした。)

 

テンプレートの割り当て

次に、Atomicテンプレートを追加サイトに割り当てます。追加サイトは前述の追加メニュー(バスロックメニュー)からなるので、これを指定します。

 

 

メニューモジュールを作成

テンプレートにメニューを表示するには、メニューをメニューモジュールに割り当てる必要があります。また、メニューモジュールのテンプレート内の表示位置も指定します。

 

『エクステンション』→『モジュール管理』→『新規』を選択し、モジュールの種類で『メニュー』を選択します。

 

タイトルを適当に入れておきます。

表示位置はAtomicテンプレート内のメニューを表示させたいモジュール位置を指定します。ここでは、atomic-sidebarを選択しました。

 

画面右側の『基本オプション』で、表示させるメニューを選択します。ここでは、追加サイト用のメニューとして、バスロックメニューを選択しています。

 

画面下部の『メニューの割り当て』→『モジュールの割り当て』を『選択されたページのみ』に変更し、このメニューモジュールを表示するメニューアイテムを選択します。今回の場合は、追加サイトに対して、この追加メニューを表示したいので、バスロックメニュー内の全項目を選択しておきます。

 

なお、メニューアイテムが選択されていても、そのメニューアイテムを表示する際のテンプレートが、指定された表示位置を持っていなければメニューモジュールは表示されません。

たぶん、これは、複数のテンプレートで同じ表示位置の名前を使っている場合に意味を持つと思われます。

 

動作確認

これで、異なるメニューを持つ、追加サイトが作成されました。

既存のサイトへアクセスすると、もともとのテンプレートにより表示されます。

 

 

追加サイトへアクセスすると、今までと異なるメニュー(バスロックメニュー)とAtomicテンプレートで表示されることが分かります。

 

 

なお、通常は既存サイトから追加サイトへ移動するリンク(およびその逆の移動用のリンク)なども追加する必要があると思います。あとは、目的に応じていろいろと調整すればよいかと思います。