MT4サイドバーは、SSI利用時、基本全て同じ

管理人は、MT4をSSI(拡張子.shtml)を使って運用しています。サイドバーは、インデックステンプレートを更新するだけで、すぐに全部のファイルに表示されるので、とてもありがたいのですが・・・。

サイトによっては、エントリーアーカイブのサイドバーにだけ、広告を表示して、mainindexには、広告を表示したくないサイトもあったりします。

そこで、あれこれ試してみたのですが、なかなか正攻法では表示できず、試行錯誤の末、以下の方法にたどりつきました。

SSIの構文を直接記述します。

ちなみに、サーバはさくらインターネットのレンタルサーバスタンダードです。

自己責任でよろしく。

サイドバー用広告枠をインデックステンプレートで作成

まず、エントリーアーカイブに表示させるサイドバー広告用のテンプレートをMT4の管理画面から作ります。

インデックステンプレート:「サイドバー広告上」
出力ファイル名:includes_c/kokoku.shtml

ここで、出力ファイルをincludes_cフォルダに作るのがみそです。

なぜ、インデックステンプレートで作るかというと、モジュールテンプレートで作っても、メインインデックスファイルにインクルードしないモジュールは、再構築した実ファイルがinclude_cフォルダに作成されないからです。

サイドバー表示用のインデックステンプレートを作成

ウィジェットセットのみのshtmlファイルを作成します。

ファイル名:任意/サイドバーウィジェットセット用など
内容:<$mt:WidgetSet name=”ウィジェットセット名”$>
出力ファイル名:includes_c/sidebar.shtmlなど

各ブログのサイドバーテンプレートモジュールを書き換えます。

<div id=”beta”>
<div id=”beta-inner”>
<!–#include virtual=”/includes_c/sidebar.shtml” –>
  </div>
</div>

SSIは、チェックを入れて、オンにします。

エントリーを投稿した時に、サイドバーの最新記事の表示がおかしくなる場合も、たぶんこのカスタマイズを使えば、修正されるはずです。

こちらのブログ記事を参考にさせていただきました。ありがとうございます!

 MT4.2: ウィジェットをインデックステンプレートとして作りSSIインクルードする方法:max engineering

エントリーアーカイブテンプレート書き換え

次に、エントリーアーカイブのテンプレートで、「サイドバー」をインクルードしている部分を、書き換えます。

先ほど作った、サイドバー広告上のファイルを直接SSIで読み込みます。

<>は、半角に置き換えてください。

元の状態

<$mt:include module=”サイドバー”$>

を、

<div id=”beta”>
<div id=”beta-inner”>
<!–#include virtual=”/includes_c/kokoku.shtml” –>
<!–#include virtual=”/includes_c/sidebar.shtml” –>
  </div>
</div>

に変更します。

これで、再構築すると、エントリーアーカイブのみ、広告が表示されているはずです。

複数ブログを使っている場合

なお、たとえば、トップのブログがあって、さらにその下のフォルダにサブブログを作っている場合は、

エントリーアーカイブテンプレート、サイドバーのSSIの記述、

<!–#include virtual=”/includes_c/kokoku.shtml” –>
<!–#include virtual=”/includes_c/sidebar.shtml” –>

を、

<!–#include virtual=”<$MTBlogRelativeURL$>includes_c/side-kokoku-top.shtml” –>
<!–#include virtual=”<$MTBlogRelativeURL$>includes_c/sidebar.shtml” –>

に書き換えると、それぞれのブログのincludes_cフォルダを見に行ってくれます。

2日間、考えてやっと出来ました。ああ、疲れた。