MovableType備忘録

個人的な備忘録
===

# その他の記事

https://qiita.com/TomoakiNagahara/items/5a1248062e18f22b8cb5

# タグの記法について

大文字小文字は区別しない。
`<MTIgnore>`も`<mtignore>`も同じ。

`MT` と `mt:` の違いはない。歴史的な経緯。
`<MTIgnore>`も`<mt:ignore>`も同じ。

$有りと無し
`$`は変数のメタファー。
`<MTVar name="custom_field">`はタグ。
`<$custom_field$>`は変数のメタファー。

# mt:BlogHost

ブログのホスト名を表示します。例えば、ブログ URL が http://www.example.com/blog/ の場合、www.example.com を表示します。

# mt:BlogURL
## 目的
ブログのFQDN（ドメイン名）を含むURLを出力する。
通常は `mt:BlogURL` を使う方が良いが、検索CGIなどを使った場合、異なるドメイン（ホスト・サーバー）でCGIが実行されていると、リンク切れになる場合がある。
このような場合は、FQDNを含む完全なURLで出力する。

## 使い方
```
<a href="<$mt:BlogURL$>">TOP</a>
```

# mt:BlogRelativeURL
## 目的
Apache の `mod_write` での `rewrite_base` に相当する。
MovableTypeは、一つのシステムで複数のブログを公開できる為、ブログ毎にディレクトリィを分ける場合がある。

FQDN（ドメイン名）を含めないのは、URLでドメイン名が省略されていた場合、カレントのページと同一であるとみなす仕様がある為。
こうすることで、MovableTypeの実行環境（ドメイン）と生成されたHTMLの公開環境（ドメイン）が異なっていてもリンクできる。

## 使い方
```
<a href="<$mt:MTBlogRelativeURL$>">TOP</a>
```

# mt:BlogName
## 目的
環境設定で設定されたブログ名を表示する。

## 使い方
```
<header><h1><$mt:BlogName$></h1></header>
```

# mt:BlogRelativeURL
## 目的
ドキュメント・ルートからの、ブログのパスを抽象化する。


## 使い方
`<$MTBlogRelativeUrl$>foo.html` → `/blog-root/foo.html`

# CategoryBasename

# encode_html

## 目的

HTMLのエスケープ（"<"や">"など）

## 使い方

```
<mt:EntryBody encode_html="1">
```

# encode_url

## 目的
Aタグ（アンカー）のhrefに利用する値をエンコードする時に使います。

## 使い方
```
<mt:EntryTitle encode_url="1">
```

```
<MTVar name="custom_field" encode_url="1">
```

# MTCanonicalURL

## 目的
CanonicalなURLを出力する

## 使い方
```
<link rel="canonical" href="<$MTCanonicalURL$>" />
```

# regex_replace

## 目的
正規表現による置換

## 使い方
例えば、`http:` を `https:` に置換する。

```
<MTVar name="custom_field" regex_replace="/http:/","https:">
```

# タグを変数に変換する
## 使い方
タグ `<mt:WebsiteURL>` を変数 `$MTWebsiteURL` に変換する。
```
<mt:WebsiteURL setvar="MTWebsiteURL">
```

## 目的

記事のURLはフル・パスだが、ドキュメント・ルート・パスに変換したい。

```
<mt:WebsiteURL setvar="MTWebsiteURL">
<mt:WebsiteRelativeURL setvar="MTWebsiteRelativeURL">
<mt:EntryPermalink replace="$MTWebsiteURL","$MTWebsiteRelativeURL">
```

置換を使っているのは、ブログのパスがドキュメント・ルート直下ではなく、サブディレクトリィに設定されている場合があるから。

```
<mt:WebsiteURL> → http://example.com/example/  
<mt:WebsiteRelativeURL> → /example/
```

# 配列のループ
## 基本
配列に代入された値を出力する。
ループの評価に利用される変数 `i` は、`$i` でタグの中で利用できる。
```
配列を定義
<mt:SetVar name="list[1]" value="one" />
<mt:SetVar name="list[2]" value="twe" />
<mt:SetVar name="list[3]" value="three" />

ループ処理
<mt:For var="i" from="1" to="3">
  <mt:Var name="i"> <mt:Var name="list[$i]"> <br/>
</mt:For>
```

## 2次元配列なら、連想配列より、こちらの方が直感的でシンプル
各配列へ定義した値をタグ内で使いたい場合は、`GetVar` して、変数に `SetVar` する。
```html
複数の配列を定義する。
<mt:SetVar name="name[1]" value="新着" />
<mt:SetVar name="code[1]" value="new" />

<mt:SetVar name="name[2]" value="人気" />
<mt:SetVar name="code[2]" value="popular" />

<mt:SetVar name="name[3]" value="ほげ" />
<mt:SetVar name="code[3]" value="hoge" />

ループ処理
<mt:For var="i" from="1" to="3">
  各配列に代入されている値を出力
  <mt:Var name="i">  <mt:Var name="name[$i]"> <mt:Var name="code[$i]"><br/>

  カテゴリー名で記事を抽出する
  <mt:GetVar name="name[$i]" setvar="category_name" />
  <mt:Entries lastn="10" category="$category_name">
    <$MTEntryTitle$><br/>
  </mt:Entries>
</mt:For>
```

# プラグイン

## MTTruncateURL

### 目的

リンク（aタグのhref）のスキーム（http, https）やFQDN（ドメイン名）を含むURL（`https://example.com/foo/bar`）を、ドメイン名を除いた、ドキュメント・ルート・パス（`https://example.com/foo/bar` → `/foo/bar`）に変換する。

### 使い方

[MTTruncateURL Plugin配布サイト](http://code.google.com/p/ogawa/wiki/MTTruncateURL_Plugin "TruncateURL ダウンロード")からプラグインをダウンロードしてpluginフォルダにアップします。

対象となるのは、`a`タグの`href`アトリビュート要素の値だけです。

```html
<mt:truncateurl>
  <a href="<$MTCategoryArchiveLink$>"><$MTCategoryArchiveLink$></a>
</mt:truncateurl>
```