使っているテンプレートによっては、モジュールを配置したい場所にモジュールポジションがない場合があります。テンプレートのファイルを編集すれば、好きな場所にモジュールポジションを追加できます。今回はデフォルトのテンプレート「Beez_20」を例として説明します。
まずBeez_20で使えるモジュールポジションを確認します。Joomla!デフォルトの設定では、ポジションを確認できないように設定されていますので、まずこの設定を変更します。「エクステンション」→「テンプレート管理」→「テンプレート」を選択し、画面右上の「オプション」をクリックし、「モジュール表示位置のプレビュー」を「有効」にします。
現在のモジュールポジションが赤字で表示されます。
今回はメインコンテンツの下(コンポーネントの下)にモジュールポジションを追加してみます。
「エクステンション」→「テンプレート管理」→「テンプレート」→「Beez_20の詳細とファイル」→「メインページ用テンプレートの編集」をクリックすると、index.phpファイルの編集画面が表示されます。この中で次のような行を探してください。
<jdoc:include type="component" />
この行がサイトのメインコンテンツ部分(コンポーネント)を出力するコードです。実際にサイトを表示する場合は、この部分が「記事」や「Webリンク」になるわけです。つまりこのすぐ下にモジュールを挿入するコードを追加すれば、メインコンテンツ部の下にモジュールを表示できます。なおモジュールを挿入するコードは以下のようになります。
<jdoc:include type="modules" name="ポジジョン名" />
ポジション名は実際には半角英数字であれば何でも構いません。今回は「bottom」にしたいと思います。ということでこの行を先ほどの行の下に追加します。
<jdoc:include type="component" />
<jdoc:include type="modules" name="bottom" />
これだけだと、CSSでモジュールを装飾したい時に困るのでdivで囲っておきます。
<jdoc:include type="component" />
<div id=”bottom”><jdoc:include type="modules" name="bottom" /></div>
ここで1つ問題が。「bottom」に何もモジュールを公開していないとき、空のdivが出力されてしまいます。そこでモジュールを挿入したコードの前後に次のようなコードを追加します。
<jdoc:include type="component" />
<?php if ($this->countModules('bottom')): ?>
<div id=”bottom”><jdoc:include type="modules" name="bottom" /></div>
<?php endif; ?>
$this->countModules('bottom')の部分でbottomに公開されているモジュールの数をカウントします。それをif構文で判定し、モジュールが0の場合はモジュール挿入コードは実行されず、1つ以上あればモジュール挿入コードが実行されます。これで空のdivが出力されるのを防いでいます。
コードを保存しプレビューで確認すると、メインコンテンツ部分下にちゃんと「bottom」ができているのが確認できます。
後はモジュールの設定画面で「表示位置」に「bottom」を直接入力すればOKです。
もし「位置の選択」ボタンからポジション名を選択したい場合はもう一手間必要です。/templates/テンプレート名/templateDetails.xmlをテキストエディタなどで開き、<position>~</position>がずらーっと並んでいる箇所を見つけたら、そこに
<position>bottom</position>
を追加します。これで「位置の選択」ボタンを押したとき、「bottom」も表示されるようになります。