一覧ページを静的分割させつつ、mt:Entriesを複数使うメモ

PowerCMSの一覧ページの静的分割をつかっていて、そのページでは記事を二箇所に書き出す必要があり、最初に配列セットとかやると期待した動作にはならなかったのでメモ。
期待した動作といってもそもそも、機能的に無理なんじゃ無かろうかというのもありますが。

今回は1ページ目かどうかでHTMLも変える必要があったので、最初のmt:entriesのなかで対応できませんでした。

<mt:Entries limit="11" offset="0"><mt:EntryID setvar="eid">
<mt:SetVar name="entry_id" function="push" value="$eid">
</mt:Entries>

上記のようなかんじで先に配列にセットしておいて、それをあとで取り出して使ってみようと考えたが、なんか配列1ページ目の配列の前に2ページ目の配列が入るかんじになってしまった。

んじゃ、ということで、配列は使わずに以下の様にしてみた。

<mt:Entries limit="11" offset="0"></mt:Entries>
<mt:Pager>
pager自体をsetvarblockする
currentpageをsetvarする
</mt:Pager>

_offset1 = (currentpage-1) * 11;
_offset2 = 3 + (currentpage-1 * 11)

<mt:Entries limit="3" offset="$_offset1">
do something
</mt:Entries>

<mt:Entries limit="8" offset="$_offset2">
do something
</mt:Entries>

これで一応動いた。

最初のmt:Entriesをみてページ分割部分が動くので、それように

<mt:Entries limit="11" offset="0"></mt:Entries>

を先にまわしておきます。

この例だと後の2つのmt:Entriesの使い方が単純なのでこれでいけました。
静的分割は処理が重くなりがちなきがするので使いすぎにも要注意でしょうね。


Comments

comments powered by Disqus