Japanese mtml guide 2 3

uehatsu edited this page Jun 28, 2011 · 25 revisions

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

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.