記事・ウェブページ・コンテンツデータの並び順と親子関係を管理できるプラグインです。
記事、ウェブページ、コンテンツデータのドラッグ&ドロップによるツリー順管理を提供する Movable Type プラグインです。
TreeOrder ディレクトリの中身を Movable Type のインストールディレクトリに配置します。
mt/
├── plugins/
│ └── TreeOrder/ ← plugins/TreeOrder をコピー
│ ├── config.yaml
│ ├── lib/
│ └── tmpl/
└── mt-static/
└── plugins/
└── TreeOrder/ ← mt-static/plugins/TreeOrder をコピー
├── js/
└── css/
TreeOrder プラグインを使用するには、ライセンスキーの認証が必要です。
ライセンスが未認証の場合、TreeOrder 管理画面にエラーメッセージが表示されます。
ライセンスキーは ライセンス管理 ページでご確認ください。
記事一覧、ウェブページ一覧、コンテンツデータ一覧の各画面に「TreeOrder 表示」リンクが追加されます。このリンクをクリックすると、ドラッグ&ドロップでツリー構造の並び替えを行える管理ページが表示されます。
ツリー順の初期化
「ツリー順を初期化」ボタンをクリックすると、モーダルダイアログが表示され、以下のいずれかを選択できます。
初期化を実行すると、既存のツリー順データはすべてリセットされ、親子関係なしの1階層の並びで作り直されます。
ドラッグ&ドロップによる並び替え
インデント / アウトデントボタン
各アイテムに ← → ボタンが表示されます。
ドラッグ&ドロップでの階層変更が難しい場合に便利です。
データの読み込み
サイトスコープのプラグイン設定で、以下の項目を変更できます。
| 設定項目 | デフォルト値 | 説明 |
| 記事の表示件数 | 50 | TreeOrder管理画面で一度に読み込む記事数 |
| 記事の最大階層数 | 0 | 記事のツリーで入れ子にできる最大階層数(0は無制限) |
| ウェブページの表示件数 | 50 | TreeOrder管理画面で一度に読み込むウェブページ数 |
| ウェブページの最大階層数 | 0 | ウェブページのツリーで入れ子にできる最大階層数(0は無制限) |
| コンテンツデータの表示件数 | 50 | TreeOrder管理画面で一度に読み込むコンテンツデータ数 |
| コンテンツデータの最大階層数 | 0 | コンテンツデータのツリーで入れ子にできる最大階層数(0は無制限) |
オブジェクト種別ごとに、ツリーの入れ子(ネスト)にできる最大階層数を制限できます。
2 なら、親→子の1段階の入れ子まで許可されます。
最大階層数に達したアイテムをさらにインデントしようとすると、エラーメッセージが表示されます。ドラッグ&ドロップによる制限を超える階層への移動も自動的にブロックされます。
【ご利用上の注意】
最大階層数を現在より浅く変更する場合は、先にTreeOrder管理画面でツリー構造を手動で調整してから設定を変更してください。たとえば、現在3階層まで使用しているツリーの最大階層数を2に変更する場合、先に3階層目のアイテムをアウトデント(←ボタン)やドラッグ&ドロップで2階層以内に収めてから保存し、その後プラグイン設定で最大階層数を変更してください。設定変更後は、制限を超える階層へのインデントやドラッグ&ドロップが自動的にブロックされます。
ブログやサイトのテンプレート(MTML)に記述して、ツリー順で記事・ページ・コンテンツデータを表示するためのタグです。
mt:TreeOrder
ツリー順にオブジェクトをループ出力します(深さ優先順)。
<mt:TreeOrder class="entry" blog_id="1" limit="10">
<div style="margin-left: <mt:TreeOrderDepth>em;">
<mt:EntryTitle>
</div>
</mt:TreeOrder>
<mt:TreeOrder class="page">
<mt:PageTitle> (depth: <mt:TreeOrderDepth>)
</mt:TreeOrder>
<mt:TreeOrder class="content_data" content_type="ニュース">
<mt:ContentLabel>
</mt:TreeOrder>
| モディファイア | 必須 | 説明 |
class
|
○ |
entry, page, content_data のいずれか
|
blog_id
|
サイトID(省略時は現在のブログコンテキスト) | |
content_type
|
コンテンツタイプ名(content_data時。content_type_id といずれか必須)
|
|
content_type_id
|
コンテンツタイプID(content_data時。content_type といずれか必須)
|
|
limit
|
取得件数制限 | |
offset
|
オフセット | |
top_level_only
|
1 でルート(一番上の階層)のアイテムのみ取得
|
mt:TreeOrderAncestors
現在のアイテムの祖先をルートから順に出力します。mt:TreeOrder ブロック内で使用してください。
<mt:TreeOrder class="entry">
<mt:EntryTitle>
パンくず:
<mt:TreeOrderAncestors glue=" > ">
<mt:EntryTitle>
</mt:TreeOrderAncestors>
</mt:TreeOrder>
| モディファイア | 説明 |
glue
|
アイテム間の区切り文字 |
mt:TreeOrderDescendants
現在のアイテムの子孫を深さ優先順で出力します。
<mt:TreeOrder class="entry" top_level_only="1">
<mt:EntryTitle> の子孫:
<mt:TreeOrderDescendants max_depth="3" include_current="1">
<div style="margin-left: <mt:TreeOrderDepth>em;">
<mt:EntryTitle>
</div>
</mt:TreeOrderDescendants>
</mt:TreeOrder>
| モディファイア | 説明 |
max_depth
|
取得する最大深度 |
include_current
|
1 で自身を含める
|
mt:TreeOrderChildren
現在のアイテムの直接の子アイテムのみを出力します。
<mt:TreeOrder class="page">
<mt:PageTitle>
<mt:TreeOrderChildren>
- <mt:PageTitle>
</mt:TreeOrderChildren>
</mt:TreeOrder>
mt:TreeOrderParent
現在のアイテムの親アイテムのコンテキストで1回だけ実行されます。
<mt:TreeOrder class="entry">
<mt:EntryTitle>
<mt:TreeOrderParent>
(親: <mt:EntryTitle>)
</mt:TreeOrderParent>
</mt:TreeOrder>
mt:TreeOrderSiblings
現在のアイテムの兄弟アイテム(同じ親を持つアイテム)を出力します。
<mt:TreeOrder class="entry">
<mt:EntryTitle> の兄弟:
<mt:TreeOrderSiblings include_current="0">
<mt:EntryTitle>
</mt:TreeOrderSiblings>
</mt:TreeOrder>
| モディファイア | 説明 |
include_current
|
0 で自身を除外(デフォルト: 1)
|
| タグ | 説明 |
<mt:TreeOrderDepth>
|
現在のアイテムのツリー深度(ルート=0) |
<mt:TreeOrderParentID>
|
親アイテムのオブジェクトID(ルート=0) |
<mt:TreeOrderSortOrder>
|
同階層内のソート順 |
| タグ | 説明 |
<mt:TreeOrderHasChildren>
|
子アイテムを持つ場合に真 |
<mt:TreeOrderHasParent>
|
親アイテムを持つ場合に真 |
<mt:TreeOrderIsFirst>
|
ループ内の最初のアイテムの場合に真 |
<mt:TreeOrderIsLast>
|
ループ内の最後のアイテムの場合に真 |
<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>
<mt:TreeOrder class="page">
<mt:TreeOrderHasParent>
<nav aria-label="breadcrumb">
<ol>
<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>