Movable Type用ShortCodeプラグイン・その9(yamlファイルだけでプラグインを作る)

ShortCodeプラグインでは、別途プラグインを追加することで、ショートコードの種類を増やすことができます。
今日は、テンプレートタグで表せる程度の、簡単なショートコードを追加する方法を解説します。
この場合は、プログラミングは不要で、config.yamlファイルを作成するだけでOKです。

1.「link」ショートコードを作る

ごく簡単な例として、他のページへのリンクを出力するために、「link」というショートコードを作ることを考えてみます。
書き方は以下のようにするものとします。

[link href="リンク先のアドレス"]リンク対象の文字列[/link]

例えば、ブログ記事に以下のように入力するとします。

[link href="http://www.sixapart.jp/"]シックスアパート[/link]

linkショートコードの入力例

この記事を再構築すると、上のショートコードが以下のように変換されるようにします。

<a href="http://www.sixapart.jp/">シックスアパート</a>

2.プラグインの定義

上記のショートコードを実際に作るには、プラグインを定義するファイル(config.yaml)を書きます。
config.yamlファイルは、大きく分けて、プラグインそのものを定義する部分と、ショートコードを定義する部分に分かれます。
プラグインを定義する部分は、以下のように書きます。

name: Link ShortCode
id: LinkShortCode
author_name: <__trans phrase="Hajime Fujimoto">
author_link: http://www.h-fj.com/blog/
description: <__trans phrase="Shortcode to input link tag.">
plugin_link: http://www.h-fj.com/blog/mtplgdoc/linkshortcode.php
doc_link: http://www.h-fj.com/blog/mtplgdoc/linkcode.php
version: 1.00

各行の意味は以下の通りです。

1行目(name: Link ShortCode)

プラグインの名前を指定します(この例では「Link ShortCode」)。
この名前は、Movable Typeの管理画面のプラグイン一覧に表示されます。

2行目(id: LinkShortCode)

プラグインを識別するためのIDを、半角英数字で決めます(この例では「LinkShortCode」)。

3行目(author_name: <__trans phrase="Hajime Fujimoto">)

「"」で囲まれた部分に、ご自分の名前を入れます(この例では「Hajime Fujimoto」)。

なお、プラグインを日本語対応にすれば、お名前を日本語で表示することもできます。
プラグインを日本語化する方法は、拙著「Movable Type Developer's Guide Volume 1」で解説しています。

4行目(author_link: http://www.h-fj.com/blog/)

ご自分のサイトのアドレスを入れます(この例では「http://www.h-fj.com/blog/」)。

5行目(description: <__trans phrase="Shortcode to input link tag.">)

「"」で囲まれた部分に、プラグインの機能等の概要文を入れます(この例では「Shortcode to input link tag.」)。

なお、「author_name」の行と同様に、プラグインを日本語対応にすれば、概要文を日本語で表示することもできます。

6行目(plugin_link: http://www.h-fj.com/blog/mtplgdoc/linkshortcode.php)

プラグインのダウンロードページのアドレスを指定します(この例では「http://www.h-fj.com/blog/mtplgdoc/linkshortcode.php」)。

7行目(doc_link: http://www.h-fj.com/blog/mtplgdoc/linkcode.php)

プラグインの解説ページのアドレスを指定します(この例では「http://www.h-fj.com/blog/mtplgdoc/linkshortcode.php」)。

8行目(version: 1.00)

プラグインのバージョン番号を決めます(この例では「1.00」)。

3.ショートコードの定義

config.yamlファイルの後半では、ショートコードそのものの動作を定義します。
今取り上げている例では、以下のような書き方をします。

shortcodes:
  link:
    snippet: [link][/link]
    description: Insert Link
    template: <a href="<$mt:GetVar name="_sc_href"$>"><$mt:GetVar name="_sc_content"$></a>

1行目(shortcodes:)

この行は常に「shortcodes:」になります。

2行目(link:)

ショートコードの名前を指定します(この例では「link」)。
ショートコード名の前には、スペースでインデントを入れます。
また、ショートコード名の後には半角のコロン(:)を入れます。

3行目(snippet: [link][/link])

記事編集ページのショートコード入力欄で、「ショートコードを挿入」のボタンがクリックされた時に、記事に入力するスニペット(ショートコードのひな型)を指定します(この例では「[link][/link]」)。
なお、「snippet」の前には、スペースでインデントを入れます。
インデントの深さは、2行目(ショートコード名の指定の行)より深くします。

4行目(description: Insert Link)

記事編集ページのショートコード入力欄には、ショートコード名とともに、動作の概要も表示するようになっています。
その概要の文章を入れます。
「description」の前には、「snippet」の行と同じ深さのインデントを入れます。

なお、プラグインを日本語に対応させれば、概要の文章を日本語で表示することもできます。
プラグインの辞書ファイルに、概要文に対応する日本語文を入れればOKです(<__trans phrase="・・・">の書き方は使いません)。

5行目(template: <a href="<$mt:GetVar name="_sc_href"$>"><$mt:GetVar name="_sc_content"$></a>)

テンプレートタグを使って、ショートコードを実際の出力に変換する方法を指定します。

MTEntriesタグ内で使えるテンプレートタグであれば、どのタグでも使えるはずです。
MTEntryTitle等のタグを使うと、再構築中の記事の情報を出力することもできます。

ショートコードにはパラメータを指定することができますが、パラメータの値は「_sc_パラメータ名」という名前の変数から得ることができます。
また、ショートコード内のブロックの値は、「_sc_content」という名前の変数から得ることができます。

例えば、「[link href="http://www.sixapart.jp/"]シックスアパート[/link]」というショートコードの場合、変数_sc_hrefの値が「http://www.sixapart.jp/」になり、変数_sc_contentの値が「シックスアパート」になります。

したがって、「<a href="<$mt:GetVar name="_sc_href"$>"><$mt:GetVar name="_sc_content"$></a>」のテンプレートは、「<a href="ショートコードのhrefパラメータの値">ショートコードのブロックの値</a>」に変換されて出力されます。

4.ファイルのアップロード

config.yamlファイルを作ったら、Movable Typeの「plugins」ディレクトリの中に、プラグインのIDと同じ名前のディレクトリを作り、そこにconfig.yamlファイルをアップロードします。
今取り上げている例だと、「plugins」ディレクトリに「LinkShortCode」ディレクトリを作り、そこにconfig.yamlファイルをアップロードします。

5.サンプルファイル

LinkShortCodeプラグインのサンプルファイルは、以下からダウンロードすることができます。

LinkShortCode_1_00.zip

ダウンロードしたファイルを解凍すると、「LinkShortCode」というフォルダができます。
このフォルダを、Movable Typeの「plugins」ディレクトリにアップロードすると、プラグインの動作を試すことができます。