あと味

たくさん情報を食べて、たくさん発信すると、あとになって味わい深い。

MovableTypeのプラグインを書いてみた

必要に迫られて、今までぼんやりとしか把握していなかったMovableTypeを触りはじめました。

Flickrの写真をサイトの中に埋め込みたかったんですが、せっかくなのでスクラッチでプラグインを書いてみようということで、「Flickr photos List」というプラグインを作ってみました。

※MTOS 5.02を使ってます。

MovableType(MT)のプラグインの練習

MovableTypeのプラグインは、MTタグを自作するもんだというあやふやな理解でいて、過去に買った以下の書籍を参考にコードを書いてみました。(最新バージョンじゃないのでご注意)

Movable Type プロフェッショナル・スタイル MT4.1対応 (Style for professional)

Movable Type プロフェッショナル・スタイル MT4.1対応 (Style for professional)

cheebowさんこと、関根さんの「プラグイン開発と応用」の章でまさに、プラグインの開発方法が載っていたので、ここを見ながらサンプル通りの簡単なMTテンプレートを作りました。

本番

今回作るFlickrの写真をサイトに埋め込むプラグインに似たようなのを、Plugin Directoryを使って探してみると、FlickrPhotosというプラグインがあり、詳細を見てみると、Requirementsという項目に、Flickr::APIが必要とあります。

サードパーティのモジュールってどうやって使うの?

サードパーティのモジュールをMTで使う方法がわからなかったので調べてみると、mt/extlibというディレクトリにサードパーティCPANモジュールをインストールすれば使えるということがわかりました。

よくよく見ると、mt/extlibの中には、よく使うCPANモジュールがたくさんあって、今回作りたいプラグインは、元々入っているLWP::SimpleとXML::Simpleで十分と判断しました。

実際作ってみて

書籍やWebを見ると作り方がいろいろあって混乱してきました。

書籍では、テンプレートタグの定義をinit_registryというサブルーチンで定義しているし、元々入っているMultiBlogやTypePadAntiSpamでは、MT::Pluginコンストラクタのregistryというプロパティで定義しているし、SixApartの技術情報提供ブログでは、MT::Template::Contextのaddtagメソッドで定義してるし。

これが俗に言うTMTOWTDIってやつかorz...

最終的に、MovableType.orgのチュートリアルにある、YAMLで設定を記述する方法に行き着きました。

Movabletype.orgのドキュメント

Movabletype.orgには、Movabletype.jpでは見つからなかったDeveloper's Guideがあり、非常に丁寧なチュートリアルがあります。

このチュートリアルは、Makefiile.PLを作ったり、PODを書いたりなど、Plugin Directoryへの登録まで指南してくれます。新参者はここのドキュメント見るのが良いのかなと思ったりしました。

作ったプラグイン

管理画面のテンプレートの作り方は書籍を参考に、後はDeveloper's Guideを参考にして、簡単なFlickrのプラグインができました。

taiju/MT-Flickr-photos-list · GitHub

使い方
  • 展開したフォルダの中にある/plugins/FlickrPhotosList/を/mt/plugins/の中にコピーもしくは移動。
  • プラグイン(システム)の設定で各種項目を入力。

f:id:jdg:20100722160700p:image

  • テンプレートに<$MTFlickrPL$>を埋める。(ulかolで写真リストが表示されます)

モディファイアを指定して、そのテンプレート上でプラグインの設定を上書きできます。

<$MTFlickrPL user_id=".....@N.." per_page="20" extras="url_t" list_type="ol"$>

まとめ

自分を含めて、今からプラグイン開発に取り組もうとする始める新参者*1にとって、どこを見れば作れるのかが提示されていないような気がするので、Movable.jpにもデベロッパー向けのガイドが欲しいなと思いました。

TMTOWTDIはいいんですけど、すべての作り方を網羅的に載せて、開発者がどの実装方法を使うか選べるようなドキュメントも欲しいなと思います。

個人的には、Movabletype.orgのドキュメントが一番詳しくてわかりやすかったです。

mt/extlibの中には、Perlでよく使うモジュールがいくつもあるので、モジュールの追加インストールをしない状態でも、いろいろ遊べそうな気配があります。ディレクトリの中を覗いてみて、「おぉ、いいじゃん。」となりました。

なにはともあれ、Perlの勉強にもなりそうだし、MTのプラグインの開発は楽しいかもと思った次第であります。

*1:俺が時代遅れなの?世の中はWordpressなの?