MovableType ではテンプレートタグを駆使することで大方必要な表示を得ることができますが、パンくずリストを作ったり、同じカテゴリの記事を表示したり、いざ書こうとすると「あれ? どのタグを使ったっけ?」とド忘れすることがあるので自分用にメモ。
mixi の MovableType コミュニティでやりとりされた内容のうち、FAQっぽいものも併せて掲載しています。
例えば、本文フィールドでは改行を変換したいが、追記フィールドでは改行を変換しないなど。
<$MTEntryExtend convert_break="0"$>
で改行設定を上書きできる。
「テンプレート」→「システム」(MT3.1x では「特別なテンプレート」)にある「画像のポップアップ・ウィンドウ」テンプレートを書き換える。
<img src="<$MTImageURL$>" width="<$MTImageWidth$>" height="<$MTImageHeight$>" onclick="window.close();" title="クリックするとウィンドゥを閉じます" />
日付を出力する MT タグのアトリビュートに、language="en" を追加
プラグインを使うなら CustomFields か RightFields か EntryXML で。またはエントリのベースネームを流用して <$MTEntryBasename$> で参照する。
mt.cfg または mt-config.cgi に以下の行を追記する。バージョンが上がって記述がなくなったが追加すれば従来どおりに設定可能。
CGIMaxUpload 1000000
こんな感じで表示したい;
2006年MTIfContentsChanged プラグインを併用する。
2月
記事A
記事B
1月
記事C
記事D
2005年
12月
記事E
記事F
<MTEntries lastn="65536"> <MTIfContentsChanged slot="0"><$MTEntryDate format="%Y"$>年<br /></MTIfContentsChanged> <MTIfContentsChanged slot="1"> <$MTEntryDate format="%m"$>月<br /></MTIfContentsChanged> <$MTEntryTitle$><br /></MTEntries>
エントリに寄せられたコメントとトラックバックを同列に扱う。時系列で並び替えてリスト表示する。要SimpleCommentプラグイン。 [個別アーカイブ]
<ul> <MTSimpleComments lastn="10" sort_order="descend"> <MTSimpleCommentIfComment> <li><$MTCommentAuthor$> said: <$MTCommentBody$></li> </MTSimpleCommentIfComment> <MTSimpleCommentIfTrackback> <li><$MTPingBlogName$> trackbacked: <$MTPingTitle$></li> </MTSimpleCommentIfTrackback> </MTSimpleComments> <ul>
CPEntriesプラグインを使う。SimpleCommentプラグインと併用すると便利。 [個別アーカイブ/カテゴリアーカイブ/インデックスアーカイブ]
<ul> <MTCPEntries lastn="5" sort_order="descend"><MTCPEntry> <li><$MTEntryTitle$> に寄せられたコメント/トラックバック ...(SimpleCommentと同じ)... </li> </MTCPEntry></MTCPEntries> </ul>
MT3.2 で CPEntries が迷惑コメント/迷惑トラックバックを拾ってくる不具合がある様子。同様に SimpleComments が迷惑トラックバックを拾ってくる(迷惑コメントは拾わない)
記事が投稿された時間軸に沿った前後記事へのナビゲーション。記事の属するカテゴリは考慮されない。[個別アーカイブ]
<MTEntryPrevious> <a href="<$MTEntryPermalink$>">≪<$MTEntryTitle$></a> </MTEntryPrevious> <MTEntryNext> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$>≫</a> </MTEntryNext>
インデックスアーカイブであれば通常通り<MTEntries>
を使えばよい。カテゴリアーカイブではそのカテゴリ内の最新記事が表示されてしまうため、インデックスアーカイブで別途ファイルに書き出しておき、PHP の include
命令で取り込む。
PreviousNextInCategoryプラグインが必要。ただし、前後記事の再構築が行われないので別途対策が必要。 [個別アーカイブ]
<MTEntryPreviousInCategory> <a href="<$MTEntryPermalink$>">≪<$MTEntryTitle$></a> </MTEntryPreviousInCategory> <MTEntryNextInCategory> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$>≫</a> </MTEntryNextInCategory>
その記事が属するカテゴリの階層をルートカテゴリから順に辿り、パンくずリストナビげーションを提供する。[個別アーカイブ/カテゴリアーカイブ]
<a href="<$MTBlogURL$>">トップ</a>≫ <MTParentCategories glue="≫"> <a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a> </MTParentCategories>
カテゴリIDを利用することができる。
<img src="icon_<$MTCategoryID$>.gif" alt="<$MTCategoryLabel encode_html="1"$>">
私は MovableTypeのカテゴリーソートに使える数字置換プラグインを使っています。カテゴリ名を "1)書斎"、"2)MovableType"、"3)電算室"、…みたいな感じで設定して、表示するときに "数字)" を取り除く。
標準タグで実現できる。
<MTEntries category="CategoryLabel"> エントリ表示 </MTEntries>
[インデックス/個別アーカイブ/カテゴリアーカイブ]
<ul><MTTopLevelCategories> <li><$MTCategoryLabel$></li> </MTTopLevelCategories><ul>
カテゴリアーカイブで使うには PHP 化して include で取り込む[インデックス]
<ul><MTCategories> <li><$MTCategoryLabel$> : <MTEntries lastn="1"><$MTEntryTitle$></MTEntries></li> </MTCategories></ul>
MTIfCategory プラグインを併用する。[カテゴリアーカイブ]
<MTIfNotCategory name="特定のカテゴリ名"> <MTInclude module="カテゴリαのテンプレート"> </MTIfNotCategory> <MTIfCategory name="特定のカテゴリ名"> <MTInclude module="カテゴリβのテンプレート"> </MTIfCategory>
MTTagInvoke プラグインを併用する。
<MTTagInvoke tag_name="MTCatEntries"> <MTTagAttribute name="days">5</MTTagAttribute> <MTTagAttribute name="include"><MTCategoryLabel></MTTagAttribute> <MTTagContent> エントリ表示 </MTTagContent> </MTTagInvoke>
XML 宣言の開始である <?
を PHP コードの開始と判断してしまうため。
XML 宣言の個所を以下のように書き換える。
<?php echo'<'?>?xml version=""?<?php echo'>'?>
例えば 3 日以内に投稿された記事タイトルの横に NEW! アイコンを表示する。
<?php function showNewIcon ($szTime) {?><?php }?> <ul><MTEntries lastn="5"> <li><$MTEntryTitle$><?php showNewIcon('<$MTCommentDate format="%Y-%m-%d %H:%M:%SZ"$>'); ?></li> </MTEntries></ul>
寄せられたコメント (全 2 件中、最新 5 件まで表示しています)
- カテゴリを意図した順番に並べたい
- 特定のカテゴリの記事だけ表示する
- トップレベルカテゴリだけ全て列挙する
- インデックスページでカテゴリごとにそのカテゴリの新着記事を一件だけ表示
- カテゴリごとに違うテンプレートを適用する
- 各カテゴリ毎に 5 日以内のエントリだけ表示する
- カレンダーの月名を英語表示にする
- エントリ編集画面で入力できるフィールドを増やしたい
- アップロード可能なファイルサイズの上限をあげる
- 記事一覧で日付の年と月の表示を分離する
- PHP 化していると XML 宣言でエラーが出る
- PHP で NEW アイコンをつける
- "改行を変換する"設定が指定された環境で特定のフィールドの改行を変換しない
- 記事のコメントとトラックバックを同じ扱いで列挙するには
- コメントまたはトラックバックされた記事を新しい順に列挙するには
- カテゴリアーカイブでブログ全体の最新記事を列挙するには
- カテゴリ毎にアイコンを表示する