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="/includes_c/side-kokoku-top.shtml" -->
<!--#include virtual="/includes_c/sidebar.shtml" -->
に書き換えると、それぞれのブログのincludes_cフォルダを見に行ってくれます。
2日間、考えてやっと出来ました。ああ、疲れた。
※管理人もスタンダード・プレミアムを利用中!
▼ さくらのレンタルサーバ
コメントする