Movable Type の使い方
<MTVar>
と<mt:var>
は同じ。大文字と小文字は区別されない。
$
があってもなくても変わらない。おそらく、$
は変数という建付だったのだと思われる。$
は無い方が見やすい。
記事(Entry)を取得する
メインページやアーカイブページのindex.html
の出力に使う。
<main>
<MT:Entries>
<section>
<h1><$MT:EntryTitle$></h1>
<article><$MT:EntryBody$></article>
</section>
</MT:Entries>
</main>
取得する記事数を制限する
最新の記事(Entry)を10件だけ取得する。
<MT:Entries lastn="10">
<h1><$MT:EntryTitle$></h1>
</MT:Entries>
全ての記事(Entry)を取得する。
<MT:BlogEntryCount setvar="entrycount">
<MT:Entries lastn="$entrycount">
<h1><$MT:EntryTitle$></h1>
</MT:Entries>
<MT:BlogEntryCount setvar="entrycount">
←タグは変数化しないと渡せないらしい?
取得する記事のカテゴリーを制限したい
最新の記事(Entry)を10件だけ取得する。ただし、特定のカテゴリは含まないという設定。
<MT:Entries lastn="10" categories="NOT カテゴリ名">
<h1><$MT:EntryTitle$></h1>
</MT:Entries>
<mt:BlogURL>
は、FQDNを含むブログのパス。
<mt:BlogRelativeURL>
は、ドキュメントルートからブログルートへのパス。
構造化データ(JSON-LD形式)
構造化データに対応すると、Googleの検索結果ページに影響を与えます。
最近、Googleが推奨しているのは「JSON+LD」形式です。
全く知らん話だった。勉強せな
Movable Typeで記事一覧のjsonを生成する
カテゴリの表示
- カテゴリーを表示する(URLに使われる。数字とアルファベット)→
<mt:CategoryBasename>
- カテゴリーのラベルを表示する(人間向けの表示に使用する)→
<mt:CategoryLabel>
記事をループしている間だけ使えるタグ
<mt:Entries></mt:Entries>
で、記事をループしているだけ使えるタグ。
- 記事のメインカテゴリを表示する→
<mt:EntryCategory>
カテゴリー名を途中でカットする
-
_
の前をカット →<mt:EntryCategory cutbefore="_">
-
_
の後ろをカット →<mt:EntryCategory cutnext="_">
正規表現を使った置換
<mt:AssetURL regex_replace="/http:\/\/example.com/","">
テンプレートのインクルード時に変数を渡す方法
例えば、メインページ(インデックスページ)か、アーカイブページか、記事ページかで、テンプレートの動作を変えたい場合に使える。
例えば、メインページのテンプレートから、以下のように【SNS_Button】というテンプレートを呼び出すと
<mt:Include module="SNS_Button" main_page="1">
【SNS_Button】というテンプレートでは、以下のように分岐できる。
<mt:If var="main_page">
メインページから呼び出された
</mt:if>
MT:EntryPermalink
記事(Entry)のパーマネントリンク。MT:Entriesのループ内で使う
-
lastn
:出力する記事の件数
<MT:Entries lastn="20">
<a href="<MT:EntryPermalink>">
<MT:EntryTitle><br/>
<MT:EntryBody remove_html="1">
</a>
</MT:Entries>
記事(Entry)のファイル名のルールを変更する
【ブログ記事】テンプレートの出力形式を変更する。
/カテゴリー/サブカテゴリー/記事ID.html
形式にするには、カスタム
で以下のように設定する。
%-c<MTIfNonEmpty tag="MTEntryCategory">/</MTIfNonEmpty ><$MTEntryID$>.html
カテゴリーの選択肢
どのカテゴリーに属しているかを選択する。
下層を選択すれば、上層の配下に含まれるので、わざわざ上のカテゴリーを選択しなくても良い。
複数のカテゴリーを選択した場合は、メインカテゴリーに注意が必要。(★マークが付く)
ページ送り(ページャー)
index.html
を index2.html
, index3.html
とページ送りしていく。
記事リスト側
記事(Entry)の出力数をコントロールする。
<MT:PageContents count="10">
のcount="10"
は、ページ送りする記事数。この記事数は、ページネーション側で記憶されている。
<MT:PageContents count="10">
<MT:Entries>
<h1><$MTEntryTitle$></h1>
</MT:Entries>
</MT:PageContents>
ページ送り機能
-
<MT:Pagination>~</MT:Pagination>
:ループ処理が行われる。このタグの間にページネーションを記述する。 -
<MT:PaginationHeader>~</MT:PaginationHeader>
:先頭側の記述。最初に1回だけ実行される。 -
<MT:PaginationFooter>~</MT:PaginationFooter>
:後方側の記述。最後に1回だけ実行される。 -
<MT:IfPaginationPrev>~</MT:IfPaginationPrev>
:もし前のページが存在したら、このタグの間が実行される。 -
<MT:IfPaginationNext>~</MT:IfPaginationNext>
:もし次のページが存在したら、このタグの間が実行される。 -
<MT:IfPaginationCurrent>~<MT:IfPaginationCurrent>
:ループが現在のページだった場合、このタグの間が実行される。 -
<$MT:PageCount$>
:現在のページ番号 -
<$MT:PageMaxCount$>
:ページの総数 -
<$MT:PaginationFirst$>
:最初のページのURL -
<$MT:PaginationLast$>
:最後のページのURL -
<$MT:PaginationPrev$>
:前のページのURLが代入されている変数のタグ。 -
<$MT:PaginationNext$>
:次のページのURLが代入されている変数のタグ。 -
<$MT:PaginationLink$>
:ループ中に現在のページに関する情報が代入されるオブジェクト型のタグ。何も指定がなければ、そのページのURLを出力する。 -
<MT:PaginationLink element="number">
:現在のページ番号を出力する。
<MT:Pagination>
<MT:PaginationHeader>
<MTIfPaginationPrev><a class="link_before" href="<$MTPaginationPrev$>">前へ</a></MTIfPaginationPrev>
</MTPaginationHeader>
<MTIfPaginationCurrent>
<MTPaginationLink element="number">
<MTElse>
<a href="<$MTPaginationLink$>"><$MTPaginationLink element="number"$></a>
</MTIfPaginationCurrent>
<MTPaginationFooter>
<MTIfPaginationNext><a class="link_next" href="<$MTPaginationNext$>">次へ</a></MTIfPaginationNext>
</MTPaginationFooter>
</MT:Pagination>
#タグ機能
<mt:EntryIfTagged>
<mt:EntryTags glue=''>
#<mt:TagName>
</mt:EntryTags>
</mt:EntryIfTagged>
タグを変数化する
変数の設定
<mt:SetVar>
で変数を設定する。
変数の出力
<mt:Var>
で変数を出力する。
具体例
<mt:SetVar name="page_title" value="メインページ">
<h1><mt:Var name="page_title"></h1>
条件分岐
<mt:If var="main_page">
<mt:SetVar name="page_title" value="メインページ">
<mt:Else>
<mt:SetVar name="page_title" value="サブページ">
</mt:If>
<h1><mt:Var name="page_title"></h1>
モジュール側で、現在のテンプレートが、メインページかブログ記事か判定したい
includeされたmodule側で、現在のテンプレートがメインページ(インデックスページ)かブログ記事か判定したい。
<mt:If tag="TemplateType" eq="index">
現在のテンプレートはメインページです。
<mt:ElseIf tag="TemplateType" eq="individual">
現在のテンプレートはブログ記事です。
<mt:Else>
その他のテンプレートです。
</mt:If>
本文からHTMLを取り除きたい
remove_html="1"
を指定する。
<MT:EntryBody remove_html="1">
正規表現を使いたい
タイトルや本文などで正規表現を利用する。
regex_replace="/置換元/","置換先"
-
g
:はグローバルオプション。全てを置換する。未指定だと最初の1件だけ置換する。
<MT:EntryBody regex_replace="/\s+/g"," ">
正規表現は時間がかかるので、単純な置換ならリプレースがよい。
Canonical URLからスキーマを取り除く(スキーマレス)。
<link rel="canonical" href="<mt:CanonicalURL replace="http://","https://">">
HTMLセーフティー
-
remove_html
:HTMLを削除する -
encode_html
:HTMLにエンコードする。&
→&
-
encode_js
:JavaScriptセーフティー
<MT:EntryBody remove_html="1" words="80" encode_html="1" encode_js="1">