Open18

Movable Type の使い方

Tomoaki NagaharaTomoaki Nagahara

<MTVar><mt:var>は同じ。大文字と小文字は区別されない。
$があってもなくても変わらない。おそらく、$は変数という建付だったのだと思われる。$は無い方が見やすい。

Tomoaki NagaharaTomoaki Nagahara

記事(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>
Tomoaki NagaharaTomoaki Nagahara

<mt:BlogURL>は、FQDNを含むブログのパス。
<mt:BlogRelativeURL>は、ドキュメントルートからブログルートへのパス。

Tomoaki NagaharaTomoaki Nagahara

カテゴリの表示

  • カテゴリーを表示する(URLに使われる。数字とアルファベット)→<mt:CategoryBasename>
  • カテゴリーのラベルを表示する(人間向けの表示に使用する)→<mt:CategoryLabel>

記事をループしている間だけ使えるタグ

<mt:Entries></mt:Entries>で、記事をループしているだけ使えるタグ。

  • 記事のメインカテゴリを表示する→<mt:EntryCategory>

カテゴリー名を途中でカットする

  • _の前をカット → <mt:EntryCategory cutbefore="_">
  • _の後ろをカット → <mt:EntryCategory cutnext="_">
Tomoaki NagaharaTomoaki Nagahara

テンプレートのインクルード時に変数を渡す方法

例えば、メインページ(インデックスページ)か、アーカイブページか、記事ページかで、テンプレートの動作を変えたい場合に使える。

例えば、メインページのテンプレートから、以下のように【SNS_Button】というテンプレートを呼び出すと

<mt:Include module="SNS_Button" main_page="1">

【SNS_Button】というテンプレートでは、以下のように分岐できる。

<mt:If var="main_page">
 メインページから呼び出された
</mt:if>
Tomoaki NagaharaTomoaki Nagahara

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>
Tomoaki NagaharaTomoaki Nagahara

記事(Entry)のファイル名のルールを変更する

【ブログ記事】テンプレートの出力形式を変更する。

/カテゴリー/サブカテゴリー/記事ID.html形式にするには、カスタムで以下のように設定する。

%-c<MTIfNonEmpty tag="MTEntryCategory">/</MTIfNonEmpty ><$MTEntryID$>.html

Tomoaki NagaharaTomoaki Nagahara

カテゴリーの選択肢

どのカテゴリーに属しているかを選択する。
下層を選択すれば、上層の配下に含まれるので、わざわざ上のカテゴリーを選択しなくても良い。
複数のカテゴリーを選択した場合は、メインカテゴリーに注意が必要。(★マークが付く)

Tomoaki NagaharaTomoaki Nagahara

ページ送り(ページャー)

index.htmlindex2.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>
Tomoaki NagaharaTomoaki Nagahara

タグを変数化する

変数の設定

<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>
Tomoaki NagaharaTomoaki Nagahara

モジュール側で、現在のテンプレートが、メインページかブログ記事か判定したい

includeされたmodule側で、現在のテンプレートがメインページ(インデックスページ)かブログ記事か判定したい。

<mt:If tag="TemplateType" eq="index">
    現在のテンプレートはメインページです。
<mt:ElseIf tag="TemplateType" eq="individual">
    現在のテンプレートはブログ記事です。
<mt:Else>
    その他のテンプレートです。
</mt:If>
Tomoaki NagaharaTomoaki Nagahara

本文からHTMLを取り除きたい

remove_html="1"を指定する。

<MT:EntryBody remove_html="1">
Tomoaki NagaharaTomoaki Nagahara

正規表現を使いたい

タイトルや本文などで正規表現を利用する。

  • regex_replace="/置換元/","置換先"
  • g:はグローバルオプション。全てを置換する。未指定だと最初の1件だけ置換する。
<MT:EntryBody regex_replace="/\s+/g"," ">

正規表現は時間がかかるので、単純な置換ならリプレースがよい。
Canonical URLからスキーマを取り除く(スキーマレス)。

<link rel="canonical"  href="<mt:CanonicalURL replace="http://","https://">">
Tomoaki NagaharaTomoaki Nagahara

HTMLセーフティー

  • remove_html:HTMLを削除する
  • encode_html:HTMLにエンコードする。&&amp;
  • encode_js:JavaScriptセーフティー
<MT:EntryBody remove_html="1" words="80" encode_html="1" encode_js="1">