Japanese mtml guide 2 3

uehatsu edited this page Jun 28, 2011 · 25 revisions
Clone this wiki locally

MultiBlog

Back To Top

はじめに

MultiBlog機能とは、複数のサイトやブログにまたがってブログ記事やウェブページを処理したり、ブログでサイトのテンプレートを使いまわしたい等の時に利用されます。

ここでは、このMultiBlogの利用方法の基礎を解説します。

MultiBlog利用の準備

MultiBlog機能は、MultiBlogプラグインによって実装されています。

MutiBlogの利用設定(システム)

  • システムのプラグイン設定からMultiBlogを選択し、設定画面を表示させます。
  • 「既定のアグリゲーションポリシー」の初期値が許可になっています。特に設定を行わなくてもインストールすると自動的に設定は「許可」になります。
  • 「許可」の状態でMultiBlogが利用可能になります。

MultiBlogの利用設定(サイト・ブログ)

  • サイトもしくはブログのプラグイン設定からMultiBlogを選択し、設定画面を表示させます。
  • 「コンテンツのセキュリティ」ではブログ単位でアグリゲーションを許可するかどうかを設定します。
    • システムの規定値を使用 > システムで指定された「アグリゲーションポリシー」に準じます。
    • 許可 > アグリゲーションを許可します。
    • 許可しない > アグリゲーションを許可しません。
  • 「MTMultiBlogタグの既定の属性:」後述する、 include_blogs exclude_blogs で設定する対象とするブログの初期値を設定します。
  • 再構築トリガー
    • アグリゲーション対象となっているブログ記事やウェブページを再構築するタイミングを設定します。
    • この設定が行われるとブログ記事やウェブページを公開した時になどアグリゲーション先のインデックスページが自動的に再構築されます。

MultiBlogの利用方法

ブログ記事のアグリゲーションをウェブサイトのインデックスで行う場合

  • サイトの概要(1サイト、3ブログ)
ウェブサイト(id = 1)  <= ここにアグリゲーション・インデックス
|__ ブログA(id = 2)
|__ ブログB(id = 3)
|__ ブログC(id = 4)

この場合、いくつかの方法があります。

  • 方法1(対象となるブログのblog_idをカンマ区切りで列挙)
<mt:Entries include_blogs="2,3,4">
    # do something
</mt:Entries>
  • 方法2(サイトから見て子供のブログ全てを指定)
<mt:Entries include_blogs="children">
    # do something
</mt:Entries>

ブログ記事のアグリゲーションを1つのブログのインデックスで行う場合

  • サイトの概要(1サイト、3ブログ)
ウェブサイト(id = 1)
|__ ブログA(id = 2) <= ここにアグリゲーション・インデックス
|__ ブログB(id = 3)
|__ ブログC(id = 4)
  • 利用方法
<mt:Entries include_blogs="siblings">
    # do something
</mt:Entries>

ウェブページのアグリゲーションをウェブサイトのインデックスで行う場合

  • サイトの概要(1サイト、3ブログ)
ウェブサイト(id = 1)  <= ここにアグリゲーション・インデックス
|__ ブログA(id = 2)
|__ ブログB(id = 3)
|__ ブログC(id = 4)
<mt:Pages include_blogs="children">
    # do something
</mt:Pages>

include_blogs に、blog_idをカンマ区切り("2,3,4")で入力してもOKです。

ウェブサイトとブログのウェブページのアグリゲーションをウェブサイトのインデックスで行う場合

  • サイトの概要(1サイト、3ブログ)
ウェブサイト(id = 1)  <= ここにアグリゲーション・インデックス
|__ ブログA(id = 2)
|__ ブログB(id = 3)
|__ ブログC(id = 4)
<mt:Pages include_blogs="children" include_with_website="1">
    # do something
</mt:Pages>

include_blogs に、blog_idをカンマ区切り("2,3,4")で入力してもOKです。

ウェブサイトとブログのウェブページのアグリゲーションをブログのインデックスで行う場合

  • サイトの概要(1サイト、3ブログ)
ウェブサイト(id = 1) 
|__ ブログA(id = 2) <= ここにアグリゲーション・インデックス
|__ ブログB(id = 3)
|__ ブログC(id = 4)
<mt:Pages include_blogs="siblings" include_with_website="1">
    # do something
</mt:Pages>

複数ウェブサイトのアグリゲーションをウェブサイトで行う場合

ウェブサイト(id = 1) <= ここにアグリゲーション・インデックス 
ウェブサイト(id = 5)
ウェブサイト(id = 6)
<mt:Websites include_websites="all">
    <mt:Pages>
        # do something
    </mt:Pages>
</mt:Websites>

テンプレートの共有

ウェブサイト、ブログにはいろいろなウィジェットやテンプレートがありますが、それらを個別に作成し管理するのは無駄があります。

そこで、 <mt:MultiBlog> タグを使って、他のウェブサイトやブログからウィジェットやテンプレートを共有できれば、更新漏れもありませんし便利になります。

他サイト・ブログのウィジェットのインクルード

以下のようにすると、他サイト・ブログからインクルードする事が出来るようになります。ここでは blog_id="2" にある価格表をブログをまたいでインクルードしてみます。

<mt:MultiBlog include_blogs="2">
    <mt:Include widget="価格表">
</mt:MultiBlog>

インクルード時に任意の値を設定する方法

Google Analyticsのトラッキングコードなどをテンプレートモジュールとして管理する事は良くあります。

その際、複数のブログでテンプレートモジュールを共有しつつ、UAコードを別に管理したい場合があります。

そういった場合、テンプレートモジュールをサイトに作成し、ブログでインクルードする際にUAコードを個別に設定するのが効果的です。

テンプレートモジュールの作成

初めに「Google Analytics」という名前のテンプレートモジュールをサイトに作成します。 <mt:Var name="google_UA" default="UA-xxxxxx-x"> が修正した部分です。値が設定されればその値を、設定されなければ default の値 UA-xxxxxx-x を設定します。

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', '<mt:Var name="google_UA" default="UA-xxxxxx-x">']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>​

テンプレートモジュールのインクルード

以下の様にしてテンプレートをインクルードします。なお parent="1" はMovable Type 5.1から実装されたモディファイアです。これにより親ウェブサイトからインクルード出来ます。

<mt:include parent="1" module="Google Analytics" google_UA="UA-000000-0">​

値の出力

以下の様に設定した値が入った状態でテンプレートがインクルードされます。

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-000000-0']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>​

まとめ

大規模サイトを作成するのに必須なMultiBlog機能ですが、以外に扱いが難しく無いのが分かって頂けましたでしょうか?

ウェブサイトとブログの親子関係によって、企業サイトなどを構築する際は大変活躍する機能です。

Back To Top