アーカイブの制御(その7・複数アーカイブページ利用時のリンク系タグ)

「アーカイブの制御」のシリーズで、前回の記事の最後に、以下のようなことを書きました。

PC用のブログ記事アーカイブページがすでにある状況で、追加でiPhone用のブログ記事アーカイブページも出力するようにしたとします。

その場合、MTEntryPermalinkタグの指すアドレスは、PC用のブログ記事アーカイブページのアドレスになります。

ここで、「iPhone用のブログ記事アーカイブページのアドレスを、どうやって表せば良いか」という疑問が出てきます。

今日はこのことについて解説します。

1.アーカイブマッピングの「優先」

前回解説したように、1種類のアーカイブタイプに複数のアーカイブマッピングを行うことができます。
例えば、「PC用」と「iPhone用」の2つのブログ記事アーカイブテンプレートを作り、両方を「ブログ記事」にアーカイブマッピングすることで、PC用/iPhone用それぞれのブログ記事アーカイブページを出力することができます。

ただし、この例のようにする場合は、MTEntryPermalinkなど、アーカイブページのアドレスを表すタグの出力は、「優先」に設定されているアーカイブページのアドレスになります。
上の例だと、「PC用」と「iPhone用」のアーカイブマッピングのうち、「PC用」が優先に設定されていると、MTEntryPermalinkタグの出力は、PC用のブログ記事アーカイブページのアドレスになります。

1つのタイプのアーカイブに複数のアーカイブマッピングを割り当てると、テンプレートの編集のページで、そのアーカイブマッピングの種類名の右に、チェックボックスが表示されるようになります。
チェックをオンにしたアーカイブマッピングが優先されます。
また、同じタイプのアーカイブの複数のアーカイブマッピングのうち、優先にできるのは1つだけです。

上で述べたような例だと、PC用/iPhone用のテンプレートのアーカイブマッピングの部分にチェックボックスが表示され、PC用のチェックがオンになり、iPhone用はオフになります。

PC用のアーカイブマッピングが優先されている

iPhone用のアーカイブマッピングは優先されていない

2.優先以外のアーカイブページのアドレスを出力する

優先に設定されていないアーカイブページのアドレスは、1つのテンプレートタグで直接的に出力することはできません。
アーカイブのパスの設定に応じて、テンプレートタグを組み合わせて出力する必要があります。

例えば、ここまでであげたような例だと、PC用のブログ記事アーカイブページのアドレスはMTEntryPermalinkタグで出力できます。
しかし、iPhone用のブログ記事アーカイブページは、アーカイブのパスの設定に応じて、テンプレートタグを組み合わせて出力します。

アーカイブのパスを設定する方法には、MTがデフォルトで用意している選択肢から選ぶ方法と、カスタムのパスを設定する方法がありました。
これらのパスの設定をテンプレートタグで表すには、「MTFileTemplate」というタグを使います。

2-1.MT標準の選択肢を使う場合

MT標準の選択肢を使う場合、それを「%y」などのカスタムのパスの書き方に置き換えてから、MTFileTemplateタグで以下のように表します。

<$mt:FileTemplate format="カスタムのパスの書き方">

例えば、ブログ記事アーカイブのパスの設定を、MT標準の選択肢の「yyyy/mm/entry-basename.html」に設定したとします。
yyyyなどは、それぞれ以下のように置き換えることができます。

置き換える元対応するカスタムのパスの書き方
yyyy%y
mm%m
entry-basename.html%-f

ただし、MTFileTemplateタグは、ページのアドレスのうち、アーカイブURLから後の部分しか出力しません。
アーカイブURLは、MTBlogArchiveURLタグで別途出力します。

ここまでの話から、「yyyy/mm/entry-basename.html」に対応する各ページのアドレスは、以下のタグで出力することができます。

<$mt:BlogArchiveURL$><$mt:FileTemplate format="%y/%m/%-f"$>

また、ページのタイトルを出力し、そのページにリンクするようにするなら、以下のようにタグを書きます。

<a href="<$mt:BlogArchiveURL$><$mt:FileTemplate format="%y/%m/%-f"$>"><$mt:EntryTitle$></a>

2-2.カスタムのパスを使う場合

アーカイブのパスとして、カスタムのパスを使うように設定した場合、「%y」等の記号の部分はMTFileTemplateタグで置き換えます。
また、カスタムのパスの中に、一般的なテンプレートタグを使った場合は、そのタグをそのまま使います。

例えば、iPhone用のブログ記事アーカイブを作り、パスを「i/%y/%m/%-f」に設定したとします。
この場合、iPhone用の各ブログ記事のページのアドレスは、以下のように表すことができます。

<$mt:BlogArchiveURL$>i/<$mt:FileTemplate format="%y/%m/%-f"$>

また、ページのタイトルを出力し、そのページにリンクするようにするなら、以下のようにタグを書きます。

<a href="<$mt:BlogArchiveURL$>i/<$mt:FileTemplate format="%y/%m/%-f"$>"><$mt:EntryTitle$></a>