MovableType

【Tips】MovableTypeでブログのカテゴリページに他ブログの記事Tag名に条件が一致した記事を出力する方法

More than 1 year has passed since last update.

Qiita50投稿目になります。

前回、投稿した【Tips】MovableTypeでブログ記事のmt:EntryTagsが他のブログのカテゴリと紐付ける方法の逆バージョンという形になります。

  • ブログのカテゴリページで出力
  • 他ブログで設置したTag名を取得しカテゴリ名と一致した記事を出力させる
  • 処理が重たいのmt:loopで展開させる
// カテゴリテンプレート
<mt:CategoryLabel setvar="this_category" />  // カテゴリを取得する
<mt:Blogs blog_ids="対象となるブログIDを入力" ignore_archive_context="1">
<mt:Tags>
<mt:TagName setvar="tag_name" />  // 対象ブログのタグを変数に格納
<mt:If name="this_category" eq="$tag_name">
<mt:Entries lastn="0">  // 対象の記事情報をmt:EntriesでSetHashVarへ格納
  <mt:SetHashVar name="entry">
    <mt:EntryTitle setvar="title" />
    <mt:EntryPermalink regex_replace='$regex_replace',"/" setvar="entry_link" />
    <mt:EntryDate format="$dateformat" setvar="entry_date" />
    <mt:CategoryLabel setvar="category_label" />
    <mt:CategoryArchiveLink regex_replace='$regex_replace',"/" setvar="category_link" />
  </mt:SetHashVar>
  <mt:Var name="push(entries)" value="$entry" />
</mt:Entries>
</mt:If>
</mt:Tags>
</mt:Blogs>
<mt:loop var="entries">  // SetHashVarをloopでHTMLへ展開する
  <mt:If name="__first__">  // ループの最初の処理
  <div class="entries-wrap">
  <h1>このカテゴリに関連する記事はこちら</h1>
  </mt:If>
  <div class="entries-box">
    <a href="<mt:Var name="entry_link" />">
      <h2 class="entries-box__title"><mt:Var name="title" /></h2>
    </a>
    <div class="entries-box__list">
      <p class="entries-box__date"><mt:Var name="entry_date" /></p>
      <p class="entries-box__category">
        <a class="entries-box__category_link" href="<mt:Var name="category_link" />">
          <mt:Var name="category_label" />
        </a>
      </p>
    </div>
  </div>
  <mt:If name="__last__">  // ループの最後の処理
  </div>
  </mt:If>
</mt:loop>

この方法は他のブログの情報を引っ張るためカテゴリアーカイブの再構築が重たくなりますが、このような方法でカテゴリ名に関する他ブログの記事Tagと一致させて一覧を取得するができます。