2016年3月3日木曜日

[MT]記事ページで表示記事を外しながら所属カテゴリ一覧を表示、しかも空いた枠に最新の記事を埋める(ややこし!)

つまり、

・記事一覧枠が3つあり、ここには記事ページが所属するカテゴリー一覧を表示したい
・でも表示している記事は外して欲しい
・そうなると、例えばカテゴリーに3件しか所属してない=該当記事がそのうちのひとつだから表示が2件になる。
・その空いた1枠には全記事からの最新記事を入れて欲しい
・もちろん表示している記事がいちばん新しかったら外してね!

・・・という要求仕様に応えるソースである。

以前探した記事で「MTの個別記事で同じカテゴリの記事一覧を表示する際に、現在の記事を除外する」というのがあったのだが、MTの仕様なのか「10件表示する」→「該当記事が入っている」→「表示させない」→「9件」という動きをしており、空いた穴を埋めてくれない物だった。それを前回のエントリーでまずはうまく行ったので、これをベースに分岐を交えてやってみた。



<mt:EntryCategory setvar="primary_category">
<mt:EntryCategories>
    <mt:if tag="CategoryLabel" eq="$primary_category">
        <mt:CategoryLabel setvar="now_cate">
        <mt:CategoryCount setvar="now_cate_count">
    </mt:if>
</mt:EntryCategories>


<mt:EntryID setvar="entryid">

<mt:Entries id="$entryid">
<mt:EntryTitle setvar="now_entry">
</mt:Entries>



<mt:If name="now_cate_count" eq="1">
<p>▼所属記事数1→カテ数0→最新記事3件表示</p>

 <MTEntries lastn="3" unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>

<p>※合計3件表示</p>

<mt:ElseIf name="now_cate_count" eq="2">
<p>▼所属記事数2=カテ数1</p>

    <MTEntryCategories type="primary">
 <MTEntries unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>
    </MTEntryCategories>

<p>▼空白補完→最新記事2件表示</p>

 <MTEntries lastn="2" unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>

<p>※合計3件表示</p>


<mt:ElseIf name="now_cate_count" eq="3">
<p>▼所属記事数3=カテ数2</p>

    <MTEntryCategories type="primary">
 <MTEntries unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>
    </MTEntryCategories>

<p>▼空白補完→最新記事1件表示</p>
 <MTEntries lastn="1" unique="1">
   <li><$MTEntryTitle$></li>
 </MTEntries>


<p>※合計3件表示</p>

<mt:Else>
<p>▼所属記事数4=カテ数フル</p>

    <MTEntryCategories type="primary">
 <MTEntries unique="1" lastn="3">
   <li><$MTEntryTitle$></li>
 </MTEntries>
    </MTEntryCategories>

<p>※合計3件表示</p>

</mt:If>


今回は、分岐用&カテゴリー指定用に所属カテゴリーと所属カテゴリーの記事数を取得し、これを変数変換する命令を最初に追加している。
そして、前回のエントリーIDを取得し、その記事をmt:Entriesで呼び出し、uniqueを使うための履歴の為に・・・というのは前回通り。
あとは、取得した所属カテゴリーの記事数の数字を使って分岐をし、それぞれ穴を埋めるための必要な記事数を呼び出していく、というわけですな。
uniqueが反応しているので、同カテゴリー一覧にも最新記事一覧にも表示記事は表示されないようになってるはず。これは多分色々使いまわせる技術ではないだろうか。

役に立った!と思った方は、広告バナーを一回ぽちっと押すだけでいいのでこの労力を誉めてください(笑

0 件のコメント:

コメントを投稿