TopMovable Typeカスタムフィールド > 2011年9月
2011年9月28日

Movable Typeのカスタムフィールドに入力した複数のブログ記事IDからブログ記事リストを出力する

September 28,2011 1:55 AM
Tag:[, , ]
Permalink

Movable Typeのカスタムフィールドに入力した複数のブログ記事IDからブログ記事リストを出力するカスタマイズを紹介します。

MTQで質問がありましたので、本エントリーで情報展開します。

1.カスタマイズイメージ

カスタムフィールド「ブログ記事ID」を作成します。種類は「テキスト」、テンプレートタグは「MTEntryIDs」とします。

カスタムフィールド作成画面

ブログ記事編集画面に表示されたカスタムフィールド「ブログ記事ID」に、ブログ記事ページに表示したいブログ記事のIDをカンマ区切りで設定します。

ブログ記事編集画面

ブログ記事を保存すれば、該当のブログ記事ページに、カスタムフィールドに入力したブログ記事IDに対応するブログ記事のリストを出力します(赤枠部分)。

ブログ記事ページ

以下、カスタマイズ方法を順を追って解説します。

2.Splitプラグインのインストール

以下のリンクよりSplitプラグインをダウンロード・インストールします。

Split プラグイン

Splitプラグインは、Perlのsplit機能をグローバルモディファイアとして提供します。

次のサブテンプレートは、変数fooに設定した「a,b,c」という値をカンマで区切り、「a」「b」「c」を配列変数barに設定するサンプルです。

<mt:setvar name="foo" value="a,b,c" />
<mt:getVar name="foo" split="," setvar="bar">
<mt:loop name="bar"> 
  <mt:getVar name="__value__" /><br />
</mt:loop>

このサブテンプレートの出力結果は、

a
b
c

となります。

3.テンプレートの修正

次のようなサブテンプレートをブログ記事アーカイブに追加します。

<mt:if tag="EntryIDs">
<h2>関連ブログ記事</h2>
  <$mt:EntryIDs split="," setvar="entry_ids"$>
  <mt:loop name="entry_ids">
    <mt:if name="__first__">
<ul>
    </mt:if>
    <mt:Entries id="$__value__"> 
  <li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
    </mt:Entries>
    <mt:if name="__last__">
</ul>
    </mt:if>
  </mt:loop>
</mt:if>

サブテンプレートの仕組みは次の通りです。

まずMTIfタグでMTEntryIDsタグの値の入力有無を判定し、入力がある場合はMTEntryIDsタグの値をsplitモディファイアで分割し、配列変数entry_idsに設定します。ブログ記事IDがひとつだけの場合も配列に設定します。

その後、MTLoopタグで、配列の値をひとつずつ取り出し、MTEntryタグのidモディファイアに設定することでブログ記事情報を取得します。

インデックステンプレートに表示したい場合は、次のように全体をMTEntriesタグで括ってください。

<mt:Entries>
  …(元のブログ記事情報を出力)…
  <mt:if tag="EntryIDs">
<h2>関連ブログ記事</h2>
    <$mt:EntryIDs split="," setvar="entry_ids"$>
    <mt:loop name="entry_ids">
      <mt:if name="__first__">
<ul>
      </mt:if>
      <mt:Entries id="$__value__"> 
  <li><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
      </mt:Entries>
      <mt:if name="__last__">
</ul>
      </mt:if>
    </mt:loop>
  </mt:if>
</mt:Entries>

あとはブログ記事編集画面のカスタムフィールドに、表示させたいブログ記事IDを入力してください。

4.注意事項

ブログ記事数が多く、カスタムフィールドに大量のブログ記事IDを設定すると再構築時のパフォーマンスに影響が出る場合があります。

Comments [0] | Trackbacks [0]
Now loading...
Recent Entries
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2022年
2021年
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3