MovableType テンプレートタグのイディオム

Posted by
ぴろり
Posted at
2007/01/14 19:18
Comments
コメント (2)
Post Comment
コメントできます
Category
MovableType カテゴリ

 MovableType ではテンプレートタグを駆使することで大方必要な表示を得ることができますが、パンくずリストを作ったり、同じカテゴリの記事を表示したり、いざ書こうとすると「あれ? どのタグを使ったっけ?」とド忘れすることがあるので自分用にメモ。

この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  

目次

 mixi の MovableType コミュニティでやりとりされた内容のうち、FAQっぽいものも併せて掲載しています。

"改行を変換する"設定が指定された環境で特定のフィールドの改行を変換しない

 例えば、本文フィールドでは改行を変換したいが、追記フィールドでは改行を変換しないなど。 <$MTEntryExtend convert_break="0"$> で改行設定を上書きできる。

アップロードされた画像のポップアップウィンドゥを画像のクリックで閉じるようにする

 「テンプレート」→「システム」(MT3.1x では「特別なテンプレート」)にある「画像のポップアップ・ウィンドウ」テンプレートを書き換える。

<img src="<$MTImageURL$>" width="<$MTImageWidth$>" height="<$MTImageHeight$>"
    onclick="window.close();" title="クリックするとウィンドゥを閉じます" />

カレンダーの月名を英語表示にする

 日付を出力する MT タグのアトリビュートに、language="en" を追加

エントリ編集画面で入力できるフィールドを増やしたい

 プラグインを使うなら CustomFieldsRightFieldsEntryXML で。またはエントリのベースネームを流用して <$MTEntryBasename$> で参照する。

アップロード可能なファイルサイズの上限をあげる

 mt.cfg または mt-config.cgi に以下の行を追記する。バージョンが上がって記述がなくなったが追加すれば従来どおりに設定可能。

CGIMaxUpload    1000000

記事一覧で日付の年と月の表示を分離する

 こんな感じで表示したい;

2006年
  2月
    記事A
    記事B
  1月
    記事C
    記事D
2005年
  12月
    記事E
    記事F
 MTIfContentsChanged プラグインを併用する。

<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>

各カテゴリ毎に 5 日以内のエントリだけ表示する

 MTTagInvoke プラグインを併用する。

<MTTagInvoke tag_name="MTCatEntries">
<MTTagAttribute name="days">5</MTTagAttribute>
<MTTagAttribute name="include"><MTCategoryLabel></MTTagAttribute>
<MTTagContent>
エントリ表示
</MTTagContent>
</MTTagInvoke>

PHP 化していると XML 宣言でエラーが出る

 XML 宣言の開始である <? を PHP コードの開始と判断してしまうため。 XML 宣言の個所を以下のように書き換える。

<?php echo'<'?>?xml version=""?<?php echo'>'?>

PHP で NEW アイコンをつける

 例えば 3 日以内に投稿された記事タイトルの横に NEW! アイコンを表示する。

<?php function showNewIcon ($szTime) {?>
3 日以内に更新されました
<?php }?>

<ul><MTEntries lastn="5">
  <li><$MTEntryTitle$><?php showNewIcon('<$MTCommentDate format="%Y-%m-%d %H:%M:%SZ"$>'); ?></li>
</MTEntries></ul>
この記事を Delicious に追加する   このエントリーをはてなブックマークに追加  


この記事のアーカイブ

全ての記事 »
2007年
全てのカテゴリ »
MovableType
全てのタグ »
, ,

寄せられたコメント (全 2 件中、最新 5 件まで表示しています)

Posted by
ぴろり ◆OLEEi.VOX.ぴろり ◆OLEEi.VOX.
at
2007/02/01 02:15
ID
SJ7EhyBk
記事を追加しました(〜'07/01/18 23:38)
- カテゴリを意図した順番に並べたい
- 特定のカテゴリの記事だけ表示する
- トップレベルカテゴリだけ全て列挙する
- インデックスページでカテゴリごとにそのカテゴリの新着記事を一件だけ表示
- カテゴリごとに違うテンプレートを適用する
- 各カテゴリ毎に 5 日以内のエントリだけ表示する
- カレンダーの月名を英語表示にする
- エントリ編集画面で入力できるフィールドを増やしたい
- アップロード可能なファイルサイズの上限をあげる
- 記事一覧で日付の年と月の表示を分離する
- PHP 化していると XML 宣言でエラーが出る
- PHP で NEW アイコンをつける
Posted by
ぴろり ◆OLEEi.VOX.ぴろり ◆OLEEi.VOX.
at
2007/01/18 20:44
ID
9OaufDmo
記事を追加しました。
- "改行を変換する"設定が指定された環境で特定のフィールドの改行を変換しない
- 記事のコメントとトラックバックを同じ扱いで列挙するには
- コメントまたはトラックバックされた記事を新しい順に列挙するには
- カテゴリアーカイブでブログ全体の最新記事を列挙するには
- カテゴリ毎にアイコンを表示する

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。