「ブログ」で親の「ウェブサイト」のテンプレートを読み込む
Movable Typeは複数の「ウェブサイト」を作って管理することができ、「ウェブサイト」の中には複数の「ブログ」を作って管理できる。
「ウェブサイト」の中で作った「ブログ」に、親となる「ウェブサイト」のヘッダーを読み込んで、というような指定もテンプレート内でできる。
<$mt:Include module="バナーフッター" parent="1"$>
みたいな感じだ。便利である。
ちなみに、mt:Includeタグ に parent="1" というモディファイアが使えるのは、MT5.1以降だ。
さて、ところでMovable Typeは基本、静的書き出しである。更新したら、再び再構築しないと更新が反映されない。「ウェブサイト」の中にある「ブログ」を更新したとする。その更新情報を「ウェブサイト」で表示するようにしていた場合、「ブログ」の更新時には「ウェブサイト」も再構築をして、書き出し直さなければいけない。
「ブログ」を更新したら、「ブログ」は勝手に再構築してくれる。ただ、親要素であっても「ウェブサイト」は、自動では再構築してくれない。
再構築トリガーを忘れずに設定する
そこで、「ウェブサイト」の「ツール>プラグイン」から設定をしてやる必要がある。
プラグインから、MultiBlogプラグインを探し、設定をクリックする。
ここの「再構築トリガーを作成」から「ブログ」を選んで、更新があったら「ウェブサイト」のインデックス・テンプレートを再構築するというようにしておくのだ。これを忘れると「ブログを更新したんですけど新着情報が変わりません」と言われてしまう。
たいてい、「ブログ記事とウェブページの保存時」をトリガーにして、インデックスを再構築する。「ブログ記事とウェブページの公開時」というトリガーもあるのだが、この場合、ステータスを公開から非公開に戻したときに反応してくれない。
「日時指定」を使う場合は「公開時」もトリガーにしておく
さて、休み前なので「日時指定」を使ってみるために、サーバーでcronの設定をして更新のチェック。
「日時指定」を使うのにcronの設定が必要なのだが、詳しくはこちらで。
Movable Type では、指定日投稿や迷惑コメント/トラックバックの削除、公開キュー等のスケジュールタスクを拡張しており、次のさまざまな方法でスケジュールタスクを実行できます。
さて、cronで run-periodic-tasks スクリプトを実行するようにしておくと、無事に「ブログ」は更新された。しかし、親の「ウェブサイト」が更新されない。これは、cronでの公開時は「保存」という作業にあたらないからだ。
ということで、トリガーを「保存時」と「公開時」の両方設定しました。こうしておけば良いのね。これで、気兼ねなく休める。(たぶん、チェックするんだろうけど)
いざとなれば、Movable Type 6ではスマートフォンに最適化した管理画面にアクセスして再構築もできますしね。