【MovableType】あれこれ集めてLoopで書き出す

tips

カテゴリごとに10件抽出して、それぞれをタブで表示切替など。
もちろん、カテゴリなしの全件表示も必要なの。

それぞれのカテゴリで10件ずつ抽出。
<mt:Entries lastn=”10″ categories=”お知らせ”>

そんでもって配列に格納するんだけど、お知らせ系なので日付順にしたいから、keyは日付。
<mt:EntryDate format=”%Y%m%d%H%M%S” setvar=”key”>

で、これを配列に格納。
<mt:SetVarBlock name=”output{$key}”>入れたい項目をあれこれ</mt:SetVarBlock>

ループで出しまーす!
<mt:Loop name=”output” sort_by=”key”>
<mt:var name=”__value__”>
</mt:Loop>

6件しかないのはなんで??? lastnが効いてないじゃん?
……前にも同じようなことした気がうっすらしてきた。
なんだっけ?

答え:同じkeyになってしまったものがあって、その配列の内容が上書きされ、件数が減った。

あーーーーっ。そうだった!

ということで、keyを変更。
日付をセットしておいたところに、個別値となるIDを追加。念のため、6桁ゼロ埋めにしておく。
<mt:EntryDate format=”%Y%m%d%H%M%S” setvar=”key”>
<mt:SetVarBlock name=”key” append=”1″><mt:EntryId pad=”1″></mt:SetVarBlock>

……件数はちゃんと10件になったけど、表示順がおかしくね?
そういえば、これも前に同じような罠にかかったことが…。

答え:numericとreverse

完成版は以下の通り!

<mt:Entries lastn="10" categories="お知らせ">
<mt:EntryDate format="%Y%m%d%H%M%S" setvar="key">
<mt:SetVarBlock name="key" append="1"><mt:EntryId pad="1"></mt:SetVarBlock>
<mt:SetVarBlock name="output{$key}">入れたい項目をあれこれ</mt:SetVarBlock>
</mt:Entries>
<mt:Loop name="output" sort_by="key numeric reverse">
<mt:var name="__value__">
</mt:Loop>

よくやる処理系のはずなのに、よく忘れるやつ。
忘れずにオボエておきましょー。

コメント

タイトルとURLをコピーしました