ObjectTree&ObjectRelationプラグインβ1(その5・テンプレートタグの詳細・前半)

ObjectTreeプラグインおよびObjectRelationプラグインで追加されるテンプレートタグを解説します。
今日はその前半です。

1.ツリーの読み込み

以下のブロックタグでツリーを読み込みます。

1-1.MTObjectTreeタグ

ObjectTreeプラグインで作成したツリーを読み込みます。
nameモディファイアで、読み込むツリーの名前を指定します。

また、以下のモディファイアのどれか1つを指定することもできます。

モディファイア内容
blog_id="○"指定したIDのブログ(またはウェブサイト)からツリーを読み込みます。
parent="1"親のウェブサイトからツリーを読み込みます。
global="1"グローバル(システムレベル)のツリーを読み込みます。

ツリーにオブジェクトがない場合に、MTElseタグのブロックを出力することもできます。

<mt:ObjectTree name="ツリーの名前">
  ツリーを出力する部分
<mt:Else>
  ツリーにオブジェクトがない場合に出力する部分
</mt:ObjectTree>

1-2.MTXXXObjectTreeタグ(XXXはカスタムフィールドにつけたテンプレートタグ名)

ObjectRelationプラグインで作成したツリーを読み込みます。
タグ名の「XXX」の部分には、カスタムフィールドにつけたテンプレートタグ名を指定します。

2.ツリーの各オブジェクトの出力

ツリーの各オブジェクトは、MTObjectTreeNodesタグのブロックで出力します。
MTObjectTreeNodesタグのブロック内では、Movable Type標準のブロック系タグと同様に、__first__/__last__/__even__/__odd__/__counter__の各変数を使うことができます。

また、あるオブジェクトから下の階層に下って、再帰的にオブジェクトを出力するには、MTObjectTreeRecurseタグを使います。
例えば、ツリーをul/li要素で出力する場合だと、一般的には以下のようにタグを組みます。

<mt:ObjectTree name="ツリーの名前">
  <mt:ObjectTreeNodes>
    <mt:If name="__first__"><ul></mt:If>
    <li>
      各オブジェクトを出力する処理
      <$mt:ObjectTreeRecurse$>
    </li>
    <mt:If name="__last__"></ul></mt:If>
  </mt:ObjectTreeNodes>
</mt:ObjectTree>

ただし、ツリー内の以下のオブジェクトは、通常は出力しません。

オブジェクトの種類出力しない条件
記事とウェブページ公開していない場合
インデックステンプレート「テンプレートの設定」の「公開」が「公開しない」になっている場合
タグプライベートタグ(タグ名の先頭が「@」)の場合

また、出力しないオブジェクトに子孫オブジェクトがある場合は、それらも出力しません。
例えば、ツリーが以下のようになっている場合、記事2だけでなく、記事3と記事4も出力しません。

  • 記事1
  • 記事2(未公開)
    • 記事3
      • 記事4
  • 記事6

未公開のオブジェクトも含めて、ツリー内のオブジェクトをすべて出力する場合は、MTObjectTreeタグ/MTXXXObjectTreeタグに「include_private="1"」のモディファイアを指定します。

3.各オブジェクトの情報を出力するファンクションタグ

以下のファンクションタグで、ツリー内の各オブジェクトの情報を出力することができます。

テンプレートタグ出力する情報
MTObjectTreeLabelラベル
オブジェクトの設定でラベルを入力した場合はその値
ラベルを入力していなければ、オブジェクト本来のラベル(例:記事のタイトル)
MTObjectTreeLinkオブジェクトのリンク先のアドレス
MTObjectTreeNoteオブジェクトの設定の「メモ」に入力した文字列
MTObjectTreeOptionsオブジェクトの設定の「オプション」に入力した文字列
MTObjectTreeDepthオブジェクトのツリー内での階層(最上位が1、その下が2、...)

MTObjectTreeLabelタグとMTObjectTreeLinkタグは、オブジェクトの種類に応じて、内部的に以下のテンプレートタグを実行します。

オブジェクトの種類MTObjectTreeLabelMTObjectTreeLink
記事MTEntryTitleMTEntryPermalink
ウェブページMTPageTitleMTPagePermalink
カテゴリMTCategoryLabelMTCategoryArchiveLink
フォルダMTFolderLabel空文字列を出力
ウェブサイトMTWebsiteNameMTWebsiteURL
ブログMTBlogNameMTBlogURL
アイテム系(画像等)MTAssetLabelMTAssetURL
タグMTTagNameMTTagSearchLink
インデックステンプレートMTIndexNameMTIndexLink