データベースからの値をユーザー変数に置き換えてから再利用すると、DBとの通信が一回で済み再構築の負担が減るという話を前回の記事で書きました。
記事のエントリーの内容を一旦変数に格納してから、それをもとに再利用してやれば格段に軽くなるハズ。
そうなると、配列を使いこなせないといけないっていうことで...
今回は何はともあれテキストデータを配列化するという点でまとめてみました。
まずは記事の一覧(記事タイトルのみ)を配列化したいと思います。
<mt:Entries lastn="0"> <mt:SetVarBlock name="記事の配列" function="push"><$mt:EntryTitle$></mt:SetVarBlock> </mt:Entries>
これで完成です。
変数の名前を「記事の配列」として、「 function="push" 」で一個ずつ記事のタイトルを配列の後ろに追加しています。
ただこのままだと、出力時(mt:Loop)にソートしたい場合、記事のタイトル(value)でしか制御できません。
(ちなみにsort_byを使わないと、再構築のたびに順番はランダムになります。)
配列の並びを意図した順番にしたい場合は「key」を使います。
「key」には好きなデータを指定することができます。
例えば、時系列でソートしたい場合は「 mt: EntryDate」を、記事の出力順であれば、予約変数「counter」を使います。
ただし、「key」を数字にする場合は、桁数を合わせないと思った結果が得られないことがあるので気をつけてください。
<mt:Entries lastn="0"> <$mt:Var name="__counter__" zero_pad="3" setvar="SET_KEY"$> <mt:SetVarBlock name="記事の配列" key="$SET_KEY"><$mt:EntryTitle$></mt:SetVarBlock> </mt:Entries>
先程の配列に「key」を追加しました。
「001=>記事タイトル」という感じで配列の値(value)ごとにキーを追加できました。
キー付きの配列のことは「ハッシュ」といいます。
上記では、記事の一覧からハッシュを作成しましたが、「mt:SetHashVar」ブロックタグを使えば手動で作ることもできます。
「キーワード」や「タグ」などのデータはカンマ区切りのテキストになっています。
先ほどのやりかた同様に「mt:EntryKeywords」で配列化してもいいですが、プラグインがあればもっと簡単に配列化することができます。
※ここでは記事アーカイブテンプレート内とします。
<$mt:EntryKeywords split="," setvar=" 変数名 "$>
一旦、変数に格納してから配列化します。
<$mt:EntryKeywords setvar="変数名"$> <mt:SplitVar name=" 変数名 " glue=",">