二重投稿はもう不要!Movable Typeの複数サイトでニュース記事を一元管理する方法

Movable Typeで複数サイトのニュース記事を一元管理する方法

Movable Typeで複数のサイト(ブログ)をまたいでニュース記事を表示・共有したい場合、代表的な方法は「MT標準タグ(MultiBlog / 複数ブログ対応タグ)」「RSS / Atom / JSON連携」「Data API」の3つです。どの方法が最適かは、各サイトが同じMovable Type環境にあるのか、別サーバーなのか、静的公開中心なのか、動的表示も許容できるのかによって変わります。

結論から言えば、同じMovable Type環境内で完結しているなら、まずはMT標準タグを使う方法が最もシンプルです。サーバーやドメインが別ならフィード連携、より柔軟な動的連携や外部アプリ連携が必要ならData APIが有力です。

この記事の結論

同一環境内なら MultiBlog 系の標準タグ別サーバー間なら RSS / Atom / JSON連携動的表示や高度な絞り込みをしたいなら Data API が基本方針です。さらに、「共有する記事だけ出したい」運用なら、カスタムフィールドでの絞り込みを組み合わせると実務で扱いやすくなります。

1. MT標準タグ(マルチブログ機能)を使う

同一のMovable Typeインストール内、または同一管理環境内で複数サイトを運用している場合に、最も基本的で実装しやすい方法です。Movable TypeのMultiBlog機能や、複数ブログ対応の <mt:Entries> を使うことで、別ブログの記事を一覧表示できます。

  • 向いているケース:
    同じMovable Typeの管理画面内で、グループ会社サイトや事業部サイトを複数運用している場合
  • 主に使うタグ:
    <mt:MultiBlog>
    <mt:Entries blog_ids="...">
    <mt:Entries include_blogs="...">
  • メリット:
    記事タイトル、本文、日付、ブログ名、カスタムフィールド、アセットなどをテンプレートタグで自由に出力できます。静的公開中心の構成でも扱いやすく、表示レイアウトの自由度も高いのが特長です。
  • 注意点:
    記事を公開しただけで、集約先ページが常に自動更新されるとは限りません。静的公開で運用している場合は、MultiBlog の再構築トリガーなどを設定し、表示先のインデックステンプレートを必要に応じて再生成する設計が重要です。

もっともシンプルな実装例

<mt:Entries blog_ids="1,2,3" lastn="5">
    <a href="<$mt:EntryPermalink$>">
        <$mt:EntryDate format="%Y.%m.%d"$>:<$mt:EntryTitle$>
        (サイト名:<$mt:BlogName$>)
    </a>
</mt:Entries>

ポイントは、blog_id ではなく blog_ids を使うことです。Movable Typeでは複数ブログ指定の書式として、blog_idsinclude_blogs が案内されています。

複数のタグをまとめて同じ対象ブログで処理したい場合

<mt:MultiBlog include_blogs="1,2,3">
    <mt:Entries lastn="5">
        <article>
            <h3><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></h3>
            <p><$mt:EntryExcerpt$></p>
            <p>掲載元:<$mt:BlogName$></p>
        </article>
    </mt:Entries>
</mt:MultiBlog>

一覧表示だけでなく、コメントやアセットなど複数のタグをまとめて同じ対象ブログに対して使いたい場合は、<mt:MultiBlog> で囲むと構成しやすくなります。

2. RSS / Atom / JSONによる外部読み込み

配信元サイトと表示先サイトが別サーバーにある場合や、Movable Typeのインストール自体が分かれている場合は、フィードやJSONを経由して情報を受け渡す方法が有効です。同一管理環境を前提としないため、グループ会社や別法人サイトとの連携にも向いています。

  • 基本的な流れ:
    1. 配信元サイトで記事一覧を出力するテンプレートを作成する
    2. 表示先サイトで、そのデータをJavaScriptやPHPなどで取得して整形表示する
  • 出力方法の考え方:
    RSSやAtomのようなフィードを使う方法は比較的オーソドックスです。JSONで連携したい場合は、独自のJSONテンプレートを出力するか、後述のData APIを使う形で考えると整理しやすくなります。
  • メリット:
    ドメインやサーバーが異なっていても連携しやすく、表示先サイト側で都度取得する仕組みにすれば、表示先の再構築を待たずに最新情報を反映しやすくなります。
  • 注意点:
    クライアントサイドJavaScriptで記事一覧を描画する場合、環境によっては検索エンジンに内容が伝わりにくいことがあります。SEOを重視する場合は、サーバーサイドで取得・整形する方法も検討したいところです。

この方法が向いているケース

  • 別会社・別ドメインのサイト間でニュースを共有したい
  • 表示先サイトにMovable Type以外のCMSを使っている
  • 一覧だけを軽く取り込みたい

補足: RSSとAtomについて

Movable TypeではRSS出力テンプレートを作成できますが、古い公式ドキュメントではRSSテンプレートはAtom推奨へ移行した案内もあります。実務では「既存環境がRSSを使っているなら継続」「新規ならAtomやJSONも含めて設計」と考えると整理しやすいでしょう。

3. Data API(REST API)を活用する

Movable Type 6以降では、mt-data-api.cgi を利用した Data API に対応しています。これはMovable TypeのコンテンツをREST/JSON形式で取得・更新できる仕組みで、一覧表示や外部システム連携をより柔軟に実装したいときに適しています。

  • 向いているケース:
    ポータルサイトのように複数のニュースを動的に集約したい場合、またはフロントエンドをReactやVue.jsなどで構築したい場合
  • 特長:
    カテゴリ、タグ、キーワード、件数などの条件で柔軟に取得しやすく、JavaScriptベースのフロントエンドや独自アプリとの連携に向いています。
  • グループサイト運用との相性:
    各社・各部門が共通のAPIエンドポイントを参照することで、ニュースのハブサイトや統合ポータルを構築しやすくなります。
  • 注意点:
    利用可否や運用条件は、Movable Typeのバージョンやエディション、契約形態によって確認が必要です。導入前に現在の環境でData APIが使えるかをチェックしておくと安心です。

Data APIが特に強い場面

  • 「カテゴリAの最新5件だけを出したい」など条件付き取得を多用する
  • 将来的にスマホアプリや社内システムともつなぎたい
  • テンプレート再構築よりも、APIベースの動的取得を優先したい

4. 共有する記事だけを表示するカスタマイズ

実際の運用では、「すべての記事を他サイトに出したいわけではない」というケースが多くあります。その場合は、記事にカスタムフィールドを追加し、共有対象の記事だけを一覧に含める方法が実用的です。

たとえば記事編集画面に「グループサイトにも掲載する」というチェックボックスを追加しておけば、チェックが入った記事だけを抽出できます。この方法は、特別なプラグインがなくても標準のカスタムフィールド機能と MTEntries のフィルタリングで対応しやすいのが利点です。承認フローや複雑な共有制御まで必要な場合のみ、追加プラグインや個別開発を検討するとよいでしょう。

実装例

<mt:Entries blog_ids="1,2,3" field:share_to_group="1" sort_by="authored_on" sort_order="descend" limit="5">
    <article>
        <h3><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></h3>
        <p>掲載元:<$mt:BlogName$></p>
    </article>
</mt:Entries>

この例では、share_to_group というベースネームのカスタムフィールドが 1 の記事だけを表示しています。つまり、編集画面でチェックを入れた記事だけをグループ共有する運用が可能です。

5. どの方法を選ぶべきか

状況 おすすめの方法 理由
同じMovable Type環境内で複数サイトを管理している MT標準タグ(MultiBlog / MTEntries 実装が比較的シンプルで、テンプレートの自由度も高い
サーバーやドメインが別である RSS / Atom / JSON連携 環境が独立していても連携しやすい
動的取得や高度な絞り込みが必要 Data API 外部アプリ連携やポータル構築に向いている
共有対象の記事だけを出したい カスタムフィールド+ MTEntries フィルタ 運用ルールを編集画面に組み込みやすい

6. 迷ったときの進め方

どの方法で始めるか迷う場合は、まず現在の構成を確認しましょう。配信元と表示先が同じMovable Type環境内にあるなら、最初の検証は blog_ids または include_blogs を使った一覧表示から始めるのが近道です。

  • 同一環境内なら、管理画面で対象ブログのIDを確認して MTEntries でテストする
  • 別環境なら、まずフィードまたはJSONをどの形式で出すか決める
  • 将来的な拡張まで見込むなら、初期段階からData APIの可用性を確認する

まとめ

Movable Typeで複数サイトのニュース記事を一元管理・表示する方法は、構成によってベストな選択が異なります。まずは同一環境か別環境かを切り分け、そのうえで標準タグフィード連携Data API のどれが最適かを決めるのが基本です。さらに、共有対象の記事だけを表示したい場合は、カスタムフィールドによる絞り込みを組み合わせることで、運用しやすい仕組みにできます。

参考リンク

前へ

境界線を越えるグローバル・マナー:海外企業へ贈る「冬の挨拶」の流儀