はじめに
よくMTタグを忘れるのでメモします。
他に使うタグを見つけたときは、追加します。
テンプレートタグについての詳細は、公式サイトの「テンプレートタグリファレンス | MovableType.jp」をご覧ください。
目次
項目が多くなってきたので、目次作りました。
よく見るとタイトルがわかりにくいですね・・・
すいません、暇なときに修正します。
- ウェブサイトのURLを表示
- ウェブサイトのURLを表示(//から始めるURL)
- ブログのURLを表示
- ブログに設定した「説明」の内容を表示
- テンプレートモジュールを読み込み
- テンプレートモジュール(親ウェブサイトから)を読み込み
- ブログのIDを取得
- ブログ記事のIDを取得
- 日付を表示
- タイトルを表示
- リンク付きタイトルを表示
- 本文を表示
- 本文(リッチテキスト)での改行を表示させる
- 記事の出力ファイル名を表示
- 公開日の古い順に並び替え
- カテゴリ名を表示
- カテゴリの説明を表示
- カテゴリのフォルダ名/ファイル名を表示
- 公開済みの記事があるカテゴリ一覧を表示する
- 表示する件数を指定
- 表示するカテゴリを指定する
- [条件分岐で表示する文字を変更する]
(http://qiita.com/4cres/items/f2ea369ebfe111a8ed00#%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%87%E5%AD%97%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B) - 表示するブログを指定する
- カスタムフィールドを表示
- カスタムフィールド(テキスト複数行)を改行して表示
- 画像のカスタムフィールドを表示
- カスタムフィールドで選択した値(日付)で並び替え
- カスタムフィールドに入力した数値で並び替え
- 連番を表示
- 前後リンクを表示
- 特定のカテゴリに該当する記事(公開済のみ)の件数が0なら何も表示せず、0でなければ表示する
- 指定したカテゴリの最終更新日時を表示
- 指定したカテゴリの情報を表示
- 指定したカテゴリの前後リンクを表示
- カテゴリ別に違うブログ記事(アーカイブテンプレート)を適用
- 指定した日数だけ自動で「NEW」マークを表示
ウェブサイトのURLを表示
ウェブサイトのURLは、MT管理画面の左メニューから「設定」→「全般」のページにある「公開パス」の「 ウェブサイトURL」に記入したURLのこと。
おそらく、末尾に「/」スラッシュが入るので、画像やリンクのパスを差し替えるときは、タグの後にスラッシュは入れないで記述すること。例えば、<a href="<$mt:WebsiteURL$>access/">
こんな感じ。
<$mt:WebsiteURL$>
参考:MTWebsiteURL | テンプレートタグリファレンス
ウェブサイトのURLを表示(//から始めるURL)
<$mt:WebsiteURL$>
はhttp:// から始まる絶対 URL で表示されます。
HTTPSで接続するのに // から始めるURLにしたい場合は下記のように記述します。
<$mt:WebsiteURL replace="http:",""$>
ブログのURLを表示
<$MTBlogURL$>
ブログに設定した「説明」の内容を表示
「説明」は、MT管理画面の左メニューから「設定」→「全般」のページにある「説明」のこと。
<$mt:BlogDescription$>
テンプレートモジュールを読み込み
<$mt:Include module="テンプレートの名前"$>
テンプレートモジュール(親ウェブサイトから)を読み込み
<$mt:Include module="テンプレートの名前" parent="1"$>
ブログのIDを取得
<$MTBlogID$>
ブログ記事のIDを取得
<$mt:EntryID$>
日付を表示
<$MTEntryDate format="%Y.%m.%d"$>
参考:MTEntryDate | テンプレートタグリファレンス
タイトルを表示
<$mt:EntryTitle$>
※HTMLページのタイトルは下記のようにするとよいかも。
<title><MTIf name="archive_class" eq="entry-archive"><$MTEntryTitle$> - </MTIf><$MTBlogName encode_html="1"$></title>
リンク付きタイトルを表示
<a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a>
本文を表示
<mt:If tag="EntryBody"><$MTEntryBody$></mt:If>
本文(リッチテキスト)での改行を表示させる
記事本文(リッチテキスト)で Enter
キーを押して改行し、1行空きを入れると <p></p>
が挿入されます。
MT6.3 の環境で、IE、GoogleChrome、Firefoxで確認(2017年3月現在)しましたが、<br>
ではなく <p></p>
が挿入されました。
p
タグに対して、余計な余白をなくすCSSを記述していると、<p></p>
が挿入されても、何の隙間も表示されず、改行しても行間に空きができません。
p
タグの間に空白などを入れることで、表示上は空きができます。
replace
を使い、置換します。
<$mt:EntryBody replace="<p></p>","<p> </p>"$>
記事の出力ファイル名を表示
<$mt:EntryBasename$>
※出力ファイル名のみで拡張子は取得しません。
公開日の古い順に並び替え
sort_by="authored_on"
で並び変えの対象を公開日に指定し、sort_order="ascend"
で昇順(新しいものが下)になるように指定しています。
<mt:Entries sort_by="authored_on" sort_order="ascend">
※公開日以外も対象に指定できます。詳細はMTEntriesをご覧ください。
カテゴリ名を表示
<$MTCategoryLabel$>
※記述するページによりますが、<mt:EntryCategories><$MTCategoryLabel$></mt:EntryCategories>
のように<mt:EntryCategories>
で囲まないとエラーが表示されます。
カテゴリの説明を表示
<$MTCategoryDescription$>
※記述するページによりますが、<mt:EntryCategories><$MTCategoryDescription$></mt:EntryCategories>
のように<mt:EntryCategories>
で囲まないとエラーが表示されます。
カテゴリのフォルダ名/ファイル名を表示
<$MTCategoryBasename$>
※記述するページによりますが、<mt:EntryCategories><$MTCategoryBasename$></mt:EntryCategories>
のように<mt:EntryCategories>
で囲まないとエラーが表示されます。
公開済みの記事があるカテゴリ一覧を表示する
<ul>
<mt:TopLevelCategories>
<mt:If tag="CategoryCount">
<li><a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$> (<$mt:ArchiveCount$>)</a></li>
</mt:If>
</mt:TopLevelCategories>
</ul>
※ <mt:If tag="CategoryCount">
と </mt:If>
で囲むと公開済みの記事があるカテゴリのみ表示します。
表示する件数を指定
例)3件表示する場合
<mt:Entries limit="3">
ここに処理を記述
</mt:Entries>
数を指定するのにlimitモディファイアの他にlastnモディファイアがあります。
limitモディファイアの方が使い勝手が良いと思います。
違いは公式サイトの「lastn モディファイアと limit モディファイアの違い」をご覧ください。
表示するカテゴリを指定する
<mt:Entries category="hoge">
ANDやNOTなどの指定も可能です。
詳細は「MovableType mt:Entriesのカテゴリ指定方法いろいろ」か「MTEntries - CMSプラットフォーム Movable Type -」をご覧ください。
条件分岐で表示する文字を変更する
例)BlogIDを変数に設定して、条件分岐をする場合
<mt:SetVarBlock name="thisBlogID"><$MTBlogID$></mt:SetVarBlock> <!-- thisBlogIDという変数にブログIDを代入 -->
<mt:If name="thisBlogID" eq="2"> <!-- thisBlogIDの値が2なら -->
お知らせ
<mt:Else> <!-- thisBlogIDの値が2でなければ -->
採用情報
</mt:If>
表示するブログを指定する
<mt:Entries blog_ids="ここにブログIDを記入">
</mt:Entries>
参考:マルチブログ機能が利用できるテンプレートタグ : Movable Type 5 ドキュメント
カスタムフィールドを表示
例)カスタムフィールドのテンプレートタグが「TestEntryType」の場合
<mt:If tag="TestEntryType"><mt:TestEntryType></mt:If>
カスタムフィールド(テキスト複数行)を改行して表示
例)カスタムフィールドのテンプレートタグが「TestEntryType」の場合
<mt:If tag="TestEntryType"><mt:TestEntryType filters="__default__"></mt:If>
上記の方法だと改行が <p>
や <br>
に変換され、リセットCSSなどを適用していると、1行空きで入力しても、空きが生じません。
単純に <br>
だけに変換したいなら nl2br="1"
を指定します。
<mt:If tag="TestEntryType"><mt:TestEntryType nl2br="1"></mt:If>
<br>
ではなく <br /> に変換したいなら
nl2br="xhtml"` を指定します。
<mt:If tag="TestEntryType"><mt:TestEntryType nl2br="xhtml"></mt:If>
画像のカスタムフィールドを表示
例)カスタムフィールドのテンプレートタグが「TestEntryPhoto」の場合
<mt:TestEntryPhotoAsset><img src="<mt:AssetURL>"></mt:TestEntryPhotoAsset>
※ Asset の記述が必要です。
カスタムフィールドで選択した値(日付)で並び替え
ベースネームがentrytime
の場合は下記のように記述します。
<mt:entries sort_by="field:entrytime">
<mt:If tag="entrytime">
<p><$mt:EntryTitle$></p>
</mt:If>
</mt:entries>
<mt:entries sort_by="field:entrytime">
でカスタムフィールドの値で並び替えをしています。
<mt:If tag="entrytime">
で日付の入力がある記事のみ表示しています。
※詳細は別途投稿した「並び順」をご覧ください。
カスタムフィールドに入力した数値で並び替え
プラグインを利用する方法
最初に「数値型のカスタムフィールドを追加するプラグイン(その1) - The blog of H.Fujimoto」のプラグインをインストールします。
例)ベースネームがpriceの場合
<mt:Entries sort_by="field:price" sort_order="ascend">
</mt:Entries>
プラグインを利用しない方法
<mt:Loop>
を使うことでプラグインなしでも並び替えができるそうです。
<mt:Entries>
を使い方はプラグインを入れる方が簡単かと思います。
参考:MovableType カスタムフィールドの値でちゃんと並び替えたいんだってばよ!|ホームページ制作のプラルトweb
連番を表示
<$mt:SetVar name="cnt" value="1"$>
<mt:Entries>
<$mt:GetVar name="cnt"$>
<$mt:SetVar name="cnt" op="++"$>
</mt:Entries>
前後リンクを表示
<MTEntryPrevious>
<a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a>
</MTEntryPrevious>
<MTEntryNext>
<a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a>
</MTEntryNext>
参考:MTEntryPrevious | テンプレートタグリファレンス MTEntryNext | テンプレートタグリファレンス
特定のカテゴリに該当する記事(公開済のみ)の件数が0なら何も表示せず、0でなければ表示する
最初の3行で「カテゴリ名」のカテゴリに該当する記事(公開済)をカウントし、Count_Info
という変数にカウントした記事を代入しています。
<mt:If name="Count_Info" ne="0">
でカウントした記事の数が0
と一致するか判定しています。
ne="0"
は0と一致しない場合のみ実行という意味になります。
ne
を変えることで条件を変えることができます。
詳細は「MTIf」をご覧ください。
<mt:Entries category="カテゴリ名">
<mt:SetVarBlock name="Count_Info"><$mt:EntriesCount$></mt:SetVarBlock>
</mt:Entries>
<mt:If name="Count_Info" ne="0">
<h2>タイトル</h2>
</mt:If>
指定したカテゴリの最終更新日時を表示
<MTEntries category="カテゴリ名" limit="1">
<$MTEntryDate format="%Y.%m.%d">
</MTEntries>
指定したカテゴリの情報を表示
<mt:Entries category="カテゴリ名">
ここに処理を記述
</mt:Entries>
指定したカテゴリの前後リンクを表示
<MTSetVarBlock name="thisid"><$MTEntryID$></MTSetVarBlock>
<MTSetVarBlock name="ecat">ここにカテゴリ名を記入</MTSetVarBlock>
<MTEntries category="$ecat">
<MTSetVarBlock name="eid"><$MTEntryID$></MTSetVarBlock>
<MTIf name="eid" eq="$thisid">
<MTSetVarBlock name="prev"><$MTVar name="__counter__"$></MTSetVarBlock>
<MTSetVarBlock name="next"><$MTVar name="__counter__" value="2" op="-"$> </MTSetVarBlock>
</MTIf>
</MTEntries>
<MTEntries category="$ecat" limit="1" offset="$prev">
前へ:<a href="<$MTEntryPermalink$>" accesskey="1"><$MTEntryTitle$></a><br />
</MTEntries>
<MTIf name="next" ge="0">
<MTEntries category="$ecat" limit="1" offset="$next">
次へ:<a href="<$MTEntryPermalink$>" accesskey="3"><$MTEntryTitle$></a><br />
</MTEntries>
</MTIf>
カテゴリ別に違うブログ記事(アーカイブテンプレート)を適用
<MTIfCategory name="カテゴリA">
ここにカテゴリAの処理
</MTIfCategory>
<MTIfCategory name="カテゴリB">
ここにカテゴリBの処理
</MTIfCategory>
指定した日数だけ自動で「NEW」マークを表示
プラグインで実装する場合
藤本氏の「DateDiffプラグイン」を導入すると、○日前の日付を指定した形式で取得することが可能です。
試してはないですが、MTIfで何日前の投稿なのか、比較すれば自動で「NEW」マークを表示することができるかと思います。
PHPで実装する場合
当たり前ですが、PHPでも可能です。
例)30日間「NEW」マークを表示する場合
関数
function new_display($time) {
$line = date("Ymd", mktime( 0,0,0,date("m") ,date("d")-30, date("Y")));
$entry = $time;
if($entry>=$line) { echo "<span>NEW</span>"; }
}
何日間表示するかは php date("d")-30
の30を変更
表示箇所
<?php new_display("<$MTEntryDate language='en' format='%Y%m%d'$>"); ?>