ウェブサイトとブログでグローバルナビゲーションを共有する
Movable Type 5 でウェブサイトとブログでグローバルナビゲーションを共有する方法です。
方法は色々あると思いますが、ここではウェブサイトのテンプレートモジュールをグローバルナビゲーションとして利用する方法を紹介します。
1.グローバルナビゲーションのメニューにウェブサイトのメインページとブログのメインページを含むケース
次のように、ウェブサイトのメインページ(ホーム)と、ウェブサイト配下のブログのメインページ(ブログ名を使用)をウェブサイトとブログで共有する例です。

1.1 ウェブサイトの「ナビゲーション」テンプレートモジュール
ウェブサイトのテンプレートモジュール「ナビゲーション」を新規作成し、次の内容を設定します。
<ul>
<li><a href="<mt:WebsiteURL />">ホーム</a></li>
<mt:Blogs include_blogs="children">
<li><a href="<mt:BlogURL />"><mt:BlogName></a></li>
</mt:Blogs>
</ul>
mt:WebsiteURL タグでウェブサイトのURLを出力します。また、ブログの情報は mt:Blogs ブロックタグを利用して出力します。その際、include_blogs="children" を設定することで、ウェブサイト配下のすべてブログが出力対象となります。
1.2 ウェブサイトで「ナビゲーション」を利用する場合
ウェブサイトの各テンプレートから「ナビゲーション」テンプレートモジュールを呼び出すには、次のmt:Include タグを使用します。
<mt:Include module="ナビゲーション" />
1.3 ウェブサイト配下のブログで「ナビゲーション」を利用する場合
ブログの各テンプレートから「ナビゲーション」テンプレートモジュールを呼び出すには、mt:Include タグを、mt:BlogParentWebsite タグで括ります。また、mt:Include タグに blog_id モディファイアを設定し、ウェブサイトのIDを設定します。
<mt:BlogParentWebsite>
<mt:WebsiteID setvar="website_id">
<mt:Include blog_id="$website_id" module="ナビゲーション" />
</mt:BlogParentWebsite>
mt:Include タグを mt:BlogParentWebsite タグで括ることで、mt:Include タグはブログが属するウェブサイトのコンテキストで動作します。つまり、「ナビゲーション」テンプレートモジュールに設定したテンプレートタグは、ウェブサイトのコンテキストで評価されます。
2.グローバルナビゲーションのメニューにウェブサイトのメインページ・ウェブページとブログのメインページ・ウェブページを含むケース
2.1 ウェブサイトの「ナビゲーション」テンプレートモジュール
ウェブサイトのテンプレートモジュール「ナビゲーション」を新規作成し、次の内容を設定します。
<ul>
<li><a href="<mt:WebsiteURL />">ホーム</a></li>
<mt:Pages>
<li><a href="<mt:PagePermalink />"><mt:PageTitle /></a></li>
</mt:Pages>
<mt:Blogs include_blogs="children">
<li><a href="<mt:BlogURL />"><mt:BlogName /></a></li>
<mt:Pages>
<li><a href="<mt:PagePermalink />"><mt:PageTitle /></a></li>
</mt:Pages>
</mt:Blogs>
</ul>
ウェブサイトのウェブページも、ブログのウェブページも、mt:Pages タグを利用します。ブログのウェブページは mt:Blogs タグを使ってブログのコンテキストで動作させます。
実際にはプライベートタグなどを使ってウェブページのフィルタリングを行なうと思いますが、ここでは説明を割愛します。
2.2 ウェブサイトで「ナビゲーション」を利用する場合
1.2 と同様です。
2.3 ウェブサイト配下のブログで「ナビゲーション」を利用する場合
1.3 と同様です。
