movable typeで自分の記事以外の関連記事を表示する

Movable Typeで自分以外の関連記事を表示させたかったのでその時のメモ。
なかなかMovable Typeは古い記事が多いし、いまいちよくわからないのも多かったため、まとめてみました。
Wordpressだと全部簡単にできるんだけどなぁ。
でも、意外にMovable Typeの案件はあるんだよね。

<h2><$mt:Var name="testes"$>関連記事</h2>
<$mt:EntryCategory setvar="testes"$>

<$mt:EntryID setvar="entry_id"$>
<mt:Entries id="$entry_id"></mt:Entries>

  <MTEntries lastn="4" unique="1" category="$testes">
      <a href="<$MTEntryLink$>">
          <MTIfNonEmpty tag="blog2Image">
            <MTblog2ImageAsset>
              <img src="<$MTAssetURL$>"alt="<$MTEntryTitle$>">
            </MTblog2ImageAsset>
          </MTIfNonEmpty>
            <h3><$MTEntryTitle$></h3>
            <mt:If tag="EntryCategories">
              <mt:EntryCategories>
                <i class="fa fa-tag" aria-hidden="true"></i><$mt:CategoryLabel$>
              </mt:EntryCategories>
            </mt:If>
      </a>
  </MTEntries>

上記は参考です。

ポイント1

記事をカテゴリでソートする。

<MTEntries category="表示したいカテゴリ名"></MTEntries>

上記で特定のカテゴリに記事を絞れる
MovableType でカテゴリーを指定して記事のリストを「表示する」、あるいは「表示しない」方法

ポイント2

記事のメインカテゴリを変数に入れて、それで上記の方法でソートする。
それによって記事によって関連記事を動的に表示できる。

変数にメインカテゴリを入れる、
これで記事のメインカテゴリが変数で呼び出せる。
つまり上記だと

<$mt:EntryCategory setvar="testes"$>

で変数に入れて

<MTEntries lastn="4" category="$testes">

で呼び出す。
これで関連記事が新しい順に4つ取り出せるが、自分自身を含んでしまっているため、これを修正する

ポイント3

自分の記事を除外するにはuniqueを使う
記事自身のエントリーIDをもたせて、それを呼び出した後、それを除外したエントリーを表示するという面倒くさいしようですが、仕方なし。

全て組み合わせるとこうなる。

<$mt:EntryCategory setvar="testes"$>

<$mt:EntryID setvar="entry_id"$>
<mt:Entries id="$entry_id"></mt:Entries>
 <MTEntries lastn="4" unique="1" category="$testes">
</MTEntries>

1、”testes”にこの記事のメインカテゴリを追加する。
2、”entry_id”に記事自身のエントリーIDを持たせて呼び出す。
3、uniqueを付けることで一度呼び出されたエントリーIDは呼ばれない。
4、つまり自分自身を除いた関連記事を表示できる。

参考

MTSetVars
MTEntryCategory
定義した変数から値を呼び出す
【Movable Type】記事ページで「最近の記事一覧」から、現在見ているページを除外する
MTEntries
MovableTypeで同じカテゴリの記事一覧から現在の記事を除外する方法

コメント