「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
アーカイブの制御(その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用はオフになります。
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>