top

MultiBlogで複数エントリーをまとめて表示(3.3以前用)

MultiBlogプラグインは4.0以降はデフォルトで標準装備されるようになりました。
以下の記述は3.3以前用です。

MTは複数のブログを作れるので、ここでもメインサイト用(Note)、覚え書き用(WingMemo)とブログを使い分けていますが、この2つの更新情報を1つにまとめて表示できたら便利かもしれない…と思い立ちました。で、やってみたので覚え書きしておきます。

これにはMultiBlogプラグインを使います。
Apperceptive: Plugins: Multiblog

上記からmultiblog-1.99.8b.zipを落としてきて解凍。「plugins」と「php」の2つのフォルダが出てくるので、mtの該当ディレクトリ内にそれぞれのフォルダの中身をアップします。
plugins/以下に → 「MultiBlog」フォルダをまるごとアップ
php/plugins/以下に → block.MTMultiBlog.phpファイルをアップ

● 下準備:自動リビルドの設定
複数ブログを表示させたいブログの「設定」→「プラグイン」を開いて、Multiblogの設定を表示。
Whenに一緒に表示させたいブログを選び、saves an entry(エントリー保存時)にRebuild Indexes(インデックスファイルをリビルド)となるようにしてみました。

070510.gif

これでWingMemoで投稿があれば自動的にNoteのインデックスが再構築されることになったと思います。ちなみにphpファイルがあるのでダイナミックでも使えるのかな?と思ったんですが、そうでもないみたいですね(^^;。
<注:ダイナミック・パブリッシング時の動き>
<MTMultiBlog> → ダイナミックに対応
<MTMultiBlogEntries> → ダイナミック非対応
MultiBlogEntriesで使用していたので気が付くのが遅れましたが、MTMultiBlogの方ならダイナミックに対応してます。

● テンプレートの書き換え

1)ブログごとに表示する場合
<MTEntries>~</MTEntries>を以下の赤字の部分で囲みます。include_blogsに表示させたいブログのIDを , で区切って並べます。

<MTMultiBlog include_blogs="1,2">
<MTEntries lastn="5">
  ・・・
 MTEntriesの内容
  ・・・
</MTEntries>
</MTMultiBlog>

include_blogsの代わりにexclude_blogsを使うと除外したいブログを指定できます。

2)ブログをまぜこぜにして一緒に表示する場合
<MTEntries>を<MTMultiBlogEntries>に、</MTEntries>を</MTMultiBlogEntries>に置き換えます。

<MTMultiBlogEntries include_blogs="1,2" lastn="10">
  ・・・
 MTEntriesの内容
  ・・・
</MTMultiBlogEntries>

3)ブログをまぜこぜにしてかつ特定のカテゴリエントリーのみ表示する場合(3.3専用*)
<MTEntries>にはcategory="カテゴリー名"というアトリビュートがあり、特定のカテゴリーのエントリーを抜き出して表示することが出来ますが、<MTMultiBlogEntries>でも使えるようです。試してみたところ、 OR で複数カテゴリーも指定することが出来ました。青字の部分を追加します。

<MTMultiBlogEntries include_blogs="1,2" lastn="10" category="カテゴリーA OR カテゴリーB">
  ・・・
 MTEntriesの内容
  ・・・
</MTMultiBlogEntries>

親カテゴリーを指定することで子カテゴリーのエントリーをまとめて表示する場合はinclude_subcategories="1"を追加します。

<MTMultiBlogEntries include_blogs="1,2" lastn="10"  include_subcategories="1" category="カテゴリーA OR カテゴリーB">
  ・・・
 MTEntriesの内容
  ・・・
</MTMultiBlogEntries>

これでかなり柔軟な使いこなしが可能です。

<注*>
<MTEntries>に複数のアトリビュートを指定できるようになったのは3.3以降です。<MTMultiBlogEntries>は<MTEntries>と同じ動きをしますので、3.2以前では<MTMultiBlogEntries>にもinclude_blogs="1,2" とcategory="カテゴリー名"の同時指定はできないようです。このカスタマイズは3.3で行って下さい。


MultiBlogの真価を発揮する使い方!?
1)の表示方法なら実はプラグインを使わなくても実装できます。ブログAにブログBの内容を表示させたいなら、ブログBで最新エントリーのみのインデックスファイルを作っておき、ブログAから<$MTInclude$>タグで読み込めばいいので。ダイナミックならリビルドする必要もありませんし。

ただしエントリーをごちゃまぜにしてしまう2)はさしもの<$MTInclude$>でも無理です。今回はRSSファイルに2つのブログの更新情報をまぜこぜにして一括表示させたかったので、2)と3)を使ってみました。こういう場合にこのプラグインの真価が発揮されるのではないかな?と思います。
ちなみにRSSでもやり方は同じで、テンプレートから<MTEntries>を探し出して<MTMultiBlogEntries>に置き換えるだけなので簡単です。


☆関係ない余談・・
MultiBlogのマニュアルをyahooで訳していたら、<div></div>が<悪霊></悪霊>と訳されてびびった・・・(笑)。

<2007.5.15 複数カテゴリ指定の追記>
<2007.5.16 ダイナミックへの対応状況を追記>
<2007.8.2 対応バージョンについて追記>
<2007.10.5 3.2以前への注意を追加>