「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
Movable Type用ShortCodeプラグイン・その9(yamlファイルだけでプラグインを作る)
ShortCodeプラグインでは、別途プラグインを追加することで、ショートコードの種類を増やすことができます。
今日は、テンプレートタグで表せる程度の、簡単なショートコードを追加する方法を解説します。
この場合は、プログラミングは不要で、config.yamlファイルを作成するだけでOKです。
1.「link」ショートコードを作る
ごく簡単な例として、他のページへのリンクを出力するために、「link」というショートコードを作ることを考えてみます。
書き方は以下のようにするものとします。
[link href="リンク先のアドレス"]リンク対象の文字列[/link]
例えば、ブログ記事に以下のように入力するとします。
[link href="http://www.sixapart.jp/"]シックスアパート[/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」というフォルダができます。
このフォルダを、Movable Typeの「plugins」ディレクトリにアップロードすると、プラグインの動作を試すことができます。