Movable Type 5.1のテンプレートタグの改良点

昨日紹介したように、Movable Type 5.1ではテンプレートタグ関係でいくつかの改良点があります。
この点について解説します。

include_blogsモディファイアとexclude_blogsモディファイアの共存

MTEntries等のテンプレートタグで、データの読み込み元のウェブサイト/ブログを指定する際に、include_blogsとexclude_blogsの各モディファイアを使うことができます。
ただ、Movable Type 5.0まででは、両者を同時に指定することができませんでした。
たとえば、「ウェブサイト配下のブログの中で、ある1つのブログだけ除外する」といったことを、簡単に行うことができませんでした。

Movable Type 5.1ではこの点が改良され、nclude_blogs/exclude_blogsの両方のモディファイアを同時に指定することができるようになります。
たとえば、以下のように書くと、ウェブサイト配下のブログのうち、IDが2番のブログだけ除外して、最新記事を10件出力することができます。

<ul>
<mt:Entries include_blogs="children" exclude_blogs="2" lastn="10">
  <li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a>(<$mt:BlogName$>)</li>
</mt:Entries>
</ul>

また、exclude_blogsモディファイアには、複数のブログのIDを指定することもできます。
たとえば、上記の例のMTEntriesタグで「exclude_blogs="2,3"」と書くと、IDが2番と3番のブログを除外することができます。

2.user_customモディファイア

Movable Type 5.1では、カテゴリ/フォルダの並べ替え機能が標準装備されます。
ただし、並べ替えた通りに出力するには、カテゴリ等を出力するテンプレートタグに、「sort_by="user_custom"」のモディファイアを付加する必要があります。
このモディファイアは、以下のテンプレートタグで使うことができます。

  • MTTopLevelCategories
  • MTSubCategories
  • MTTopLevelFolders
  • MTSubFolders
  • MTCategoryNext
  • MTCategoryPrevious
  • MTFolderNext
  • MTFolderPrevious

たとえば、ブログ内のカテゴリの一覧を、指定した並び順の通りに出力するには、以下のように書きます。

<mt:TopLevelCategories sort_by="user_custom">
  <mt:SubCatIsFirst><ul></mt:SubCatIsFirst>
  <li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$></a>
  <$mt:SubCatsRecurse$>
  </li>
  <mt:SubCatIsLast></ul></mt:SubCatIsLast>
</mt:TopLevelCategories>

なお、従来のMovable Typeからバージョンアップする場合、テンプレート内の上記のテンプレートタグには、「sort_by="user_custom"」のモディファイアはありません。
並べ替えた通りにカテゴリ/フォルダを出力できるようにするには、テンプレートにこれらのモディファイアを手作業で追加します。

また、MTCategoriesタグ/MTFoldersタグにはsort_byモディファイアの機能はありません。

3.MTIncludeタグのparentモディファイア

MTIncludeタグでブログのテンプレートに他のテンプレートモジュールを組み込む際に、「parent="1"」のモディファイアを指定すると、親ウェブサイトのテンプレートモジュールを組み込むことができます。
たとえば、ブログのテンプレートに以下のように書くと、ウェブサイトにある「グローバルナビ」というテンプレートモジュールを組み込む動作になります。

<$mt:Include module="グローバルナビ" parent="1"$>

なお、ブログ/ウェブサイト/システムに同名のテンプレートモジュールがある場合、付加するモディファイアによって、組み込むテンプレートモジュールを以下のように選ぶことができます。

モディファイア組み込むテンプレートモジュール
モディファイアなしブログのテンプレートモジュール
parent="1"ウェブサイトのテンプレートモジュール
global="1"システムのテンプレートモジュール

また、ウェブサイトのテンプレートの中で、MTIncludeタグに「parent="1"」のモディファイアを付加した場合、そのウェブサイトのテンプレートモジュールが組み込まれます。