Movable Type の記事やページの並び順、もっと自由に管理しませんか?「 TreeOrder 」プラグインのご紹介

2026-03-09
20分で読了
更新: 2026-03-09
TreeOrderBanner.webp

目次

Movable Type でサイトを運営していると、「記事やページ、コンテンツデータの表示順をもう少し自由に変えたいな」と思う場面、ありませんか?

グローバルメニューの項目を並び替えたい、FAQ の質問順を整理したい、スタッフ紹介を役職順にしたい。でも Movable Type の標準機能では、記事の並び順は基本的に公開日やIDなどのソートに限られてしまいます。

そこで作ったのが TreeOrder プラグインです。

管理画面上でドラッグ&ドロップするだけで、記事・ウェブページ・コンテンツデータの並び順と階層構造を直感的に管理できます。

この記事では、TreeOrder の基本的な使い方から、具体的な活用シーン、テンプレートタグの書き方まで、まとめてご紹介します。

TreeOrder でできること

TreeOrder を導入すると、記事・ウェブページ・コンテンツデータ一覧画面にこのような「TreeOrder 表示」画面が追加されます。

この「TreeOrder 表示」というリンクをクリックすると、ツリー構造で記事等の階層と並び順が一目でわかるページが表示されます。ここでドラッグ&ドロップやインデント/アウトデントボタンを使って、自由に並び替えや階層変更ができます。

主な機能をまとめると、こんな感じです。

  • ドラッグ&ドロップ で並び順を自由に変更
  • インデント/アウトデント ボタンで親子関係を操作
  • 記事・ウェブページ・コンテンツデータ のすべてに対応
  • ツリー順の初期化 機能でワンクリックリセット
  • 記事の新規作成や削除に 自動追従
  • 豊富な テンプレートタグ でツリー順出力

初回セットアップはワンクリック

プラグインをインストールして最初に TreeOrder 表示画面を開くと、「ツリー順を初期化」ボタンが表示されます。

「IDの昇順(古い順)」か「IDの降順(新しい順)」を選ぶだけで、既存の記事が自動的にツリーに登録されます。あとはドラッグ&ドロップで好きな順番に並び替えていくだけです。

ウェブページもコンテンツデータもOK

TreeOrder は記事だけでなく、ウェブページやコンテンツデータにも対応しています。

コンテンツデータの場合は、コンテンツタイプごとに個別のツリーを管理できます。サイトの構造に合わせて柔軟に使い分けてみてください。

こんな場面で活躍します

ここからは、TreeOrder が特に便利に使える具体的なシーンをご紹介します。

1. サイトナビゲーション(グローバルメニュー)

ヘッダーやサイドバーのメニュー構成を管理するケースです。

たとえば「会社概要」の下に「代表挨拶」「アクセス」を配置したり、「サービス」の下に「コンサルティング」「開発」「サポート」をぶら下げたり。こうしたメニューの親子関係と並び順を、管理画面上で視覚的に操作できます。

メニュー構成の変更が多いサイトでは、テンプレートを書き換える手間が省けてかなり助かるはずです。

テンプレートはこんな風に書きます。

<nav>
  <mt:TreeOrder class="page" top_level_only="1">
    <mt:TreeOrderIsFirst><ul></mt:TreeOrderIsFirst>
    <li>
      <a href="<mt:PagePermalink>"><mt:PageTitle></a>
      <mt:TreeOrderHasChildren>
        <ul>
          <mt:TreeOrderChildren>
            <li><a href="<mt:PagePermalink>"><mt:PageTitle></a></li>
          </mt:TreeOrderChildren>
        </ul>
      </mt:TreeOrderHasChildren>
    </li>
    <mt:TreeOrderIsLast></ul></mt:TreeOrderIsLast>
  </mt:TreeOrder>
</nav>

top_level_only="1" でトップレベルのページだけを取得し、<mt:TreeOrderHasChildren> で子ページがあるかチェック、<mt:TreeOrderChildren> で子ページをループ出力しています。ネストされたメニューがこれだけのテンプレートで実現できます。

2. FAQ ページの質問順序管理

FAQ は「よく聞かれる質問を上に、あまり聞かれないものは下に」と並べたいですよね。公開日順だと意図した順番になりません。

TreeOrder を使えば、問い合わせが多い質問をドラッグで上位に持ってきたり、カテゴリ的に関連する質問をまとめて配置したりできます。新しい質問を追加した際も、適切な位置にさっと挿入できるのがポイントです。

<div class="faq-list">
  <mt:TreeOrder class="entry" blog_id="3">
    <div class="faq-item">
      <h3 class="faq-question"><mt:EntryTitle></h3>
      <div class="faq-answer"><mt:EntryBody></div>
    </div>
  </mt:TreeOrder>
</div>

FAQ専用のブログ(サイト)を用意して blog_id で指定すれば、FAQ の並び順だけを独立して管理できます。

3. 製品・サービスカタログの表示順管理

商品紹介ページやサービス一覧で「おすすめ順」「人気順」など、マーケティング意図に合わせた並び順にしたいこと、よくありますよね。

季節のセール品を一時的に上位に持ってきたり、新商品を目立つ位置に配置したりといった運用が、管理画面から数秒で完了します。

<div class="product-catalog">
  <mt:TreeOrder class="content_data" content_type="商品">
    <div class="product-card">
      <h3><mt:ContentLabel></h3>
      <mt:ContentField content_field="商品画像">
        <img src="<mt:AssetURL>" alt="<mt:ContentLabel>">
      </mt:ContentField>
      <mt:ContentField content_field="価格">
        <p class="price"><mt:ContentFieldValue></p>
      </mt:ContentField>
    </div>
  </mt:TreeOrder>
</div>

コンテンツデータを使えば、商品情報をフィールドで構造化しながら、表示順は TreeOrder で自在にコントロールできます。

4. マニュアル・ヘルプドキュメントの構造管理

「はじめに → インストール → 基本操作 → 応用操作 → トラブルシューティング」のようなドキュメントの章立てを管理するケースです。

TreeOrder の階層構造がそのままドキュメントの章・節・項の構造になるので、<mt:TreeOrderDepth> タグを使えば見出しレベルの制御も自動化できます。

<div class="manual">
  <mt:TreeOrder class="page">
    <mt:TreeOrderDepth setvar="depth">
    <mt:if name="depth" eq="0">
      <h2><mt:PageTitle></h2>
    <mt:elseif name="depth" eq="1">
      <h3><mt:PageTitle></h3>
    <mt:else>
      <h4><mt:PageTitle></h4>
    </mt:if>
    <div class="content" style="margin-left: <mt:TreeOrderDepth>em;">
      <mt:PageBody>
    </div>
  </mt:TreeOrder>
</div>

章の入れ替えや新しいセクションの挿入も、ドラッグ操作だけで完結します。目次も TreeOrder の順序で自動生成できるので、ドキュメントの構成変更がとても楽になります。

5. ポートフォリオ・実績紹介の並び順管理

制作会社やフリーランスのポートフォリオサイトで、実績をアピール度の高い順に並べたい場合にも便利です。

新しい案件が入ったときに目立つ位置にさっと配置したり、ジャンルごとに階層を分けて整理したりできます。

<div class="portfolio">
  <mt:TreeOrder class="entry" top_level_only="1">
    <section class="portfolio-category">
      <h2><mt:EntryTitle></h2>
      <mt:TreeOrderHasChildren>
        <div class="works">
          <mt:TreeOrderChildren>
            <div class="work-item">
              <h3><mt:EntryTitle></h3>
              <mt:EntryBody>
            </div>
          </mt:TreeOrderChildren>
        </div>
      </mt:TreeOrderHasChildren>
    </section>
  </mt:TreeOrder>
</div>

トップレベルをカテゴリ(「Web」「グラフィック」「動画」など)、その子要素を個別の実績として管理するイメージです。

6. スタッフ紹介ページ

役職順や部署別にスタッフを並べたいケースです。「社長 → 取締役 → 部長 → ...」という並び順は公開日とは関係ないので、まさに TreeOrder の出番ですね。

組織変更や人事異動があっても、管理画面でドラッグ&ドロップするだけで即座に反映できます。

<div class="staff-list">
  <mt:TreeOrder class="content_data" content_type="スタッフ" top_level_only="1">
    <section class="department">
      <h2><mt:ContentLabel></h2>
      <div class="members">
        <mt:TreeOrderChildren>
          <div class="staff-card">
            <h3><mt:ContentLabel></h3>
            <mt:ContentField content_field="役職">
              <p class="position"><mt:ContentFieldValue></p>
            </mt:ContentField>
            <mt:ContentField content_field="プロフィール写真">
              <img src="<mt:AssetURL>" alt="<mt:ContentLabel>">
            </mt:ContentField>
          </div>
        </mt:TreeOrderChildren>
      </div>
    </section>
  </mt:TreeOrder>
</div>

トップレベルを部署名、子要素をスタッフとして管理すれば、部署ごとの表示順もスタッフの順番もすべて TreeOrder で制御できます。

「ツリーなし」の並び替えモードも

ここまでツリー構造を活用した例をご紹介してきましたが、「order だけで、tree にしたくない」というケースもあると思います。FAQ の質問順やスタッフ紹介の表示順など、階層構造は不要で単純に並び替えだけしたい場面ですね。

そんな声にお応えして、最大階層数の設定を用意しました。

サイトスコープのプラグイン設定で、オブジェクト種別ごとに最大階層数を指定できます。

  • 0(デフォルト): 無制限。何階層でも入れ子にできます。
  • 1: フラットリスト。入れ子不可で、並び順の変更のみ可能です。
  • 2以上: 指定した階層数まで入れ子を許可します。例えば 2 なら、親→子の1段階の入れ子まで許可されます。

【スクリーンショット: 最大階層数の設定画面】

最大階層数を 1 に設定すると、インデント/アウトデントボタンが無効化され、ドラッグ&ドロップで並び順だけを変更するシンプルなモードになります。誤って階層を作ってしまう心配もありません。

【スクリーンショット: フラットリストモード(最大階層数=1)の画面】

逆に 2 に設定すれば、「親カテゴリ → 子アイテム」のような1段階のグルーピングだけ許可する、といった使い方もできます。用途に合わせて柔軟に調整してみてください。

テンプレートタグの一覧

この記事で紹介したタグ以外にも、TreeOrder にはさまざまなテンプレートタグが用意されています。すべてのタグ・属性の詳細は製品ページをご覧ください。

おまけ:パンくずナビゲーション

TreeOrder のタグを組み合わせると、パンくずナビゲーションも簡単に作れます。

<mt:TreeOrder class="page">
  <mt:TreeOrderHasParent>
    <nav aria-label="パンくずナビゲーション">
      <ol class="breadcrumb">
        <mt:TreeOrderAncestors>
          <li><a href="<mt:PagePermalink>"><mt:PageTitle></a></li>
        </mt:TreeOrderAncestors>
        <li aria-current="page"><mt:PageTitle></li>
      </ol>
    </nav>
  </mt:TreeOrderHasParent>
</mt:TreeOrder>

<mt:TreeOrderAncestors> がルートから現在のページまでの祖先を順番に出力してくれるので、パンくずの構造がそのままテンプレートに反映されます。

動作要件

  • Movable Type 8 / Movable Type 9

まとめ

TreeOrder プラグインは、Movable Type の「並び順管理」に関する不満をまとめて解消してくれるプラグインです。

管理画面でドラッグ&ドロップするだけで並び順と階層構造を管理でき、テンプレートタグでそのままサイトに出力できる。ナビゲーションメニュー、FAQ、製品カタログ、マニュアル、ポートフォリオ、スタッフ紹介...表示順に意味があるコンテンツなら、どんな場面でも活用できます。

ぜひ試してみてください。

(宣伝)TreeOrder プラグインの詳細・ダウンロードは製品ページからどうぞ。

この記事をシェア

関連記事