Movable Type プラグイン開発入門。

| コメント(0) | トラックバック(1)

CHEEBOWさんこと関根元和さん入魂の一冊。実はWebSig24/7 MT分科会のジャンケンで当ててしまいました(空気読めなくてごめんなさい)。

ひとことで言うと、

サイト構築等を仕事でやっていてMTでサイト構築する人は一冊買っておきなさい!

ということになります。

いや、いい時代(謎)になったもので、僕がプラグインを書きはじめた頃は書籍はおろかWebにも情報(特に日本語の)がほとんどなくて唯一Movable Type オブジェクト・リファレンスを見ながら試行錯誤していました。最近でこそ情報が出回り出したけど、これだけまとまった日本語での情報はこれまでありませんでした。

プラグインの構造からMTオブジェクトの扱い方、ダイナミックパブリッシングまでサポートしてます。

良くある勘違いとして、MTの各データはDBに保存されてる→PHP+MySQLならさわれるから、直接DBから呼び出してデータを組み立てたりすればオレにも拡張できるもんね! というPHPerのWeb屋さんがいます。いや、PHPでもいいんですが、MTにはダイナミックパブリッシングという仕組みがあり、PHPのAPIも用意されてます。Perl APIとは違って主に利用用途に限られますが、動的なサイト構築であればPHPからMTのAPIを経由してDBのデータを利用することでかなり自由な開発が可能です。

この本ではPerl APIを学んでからPHP章を読んだ方がわかりやすい作りになっていますが、ダイナミックパブリッシングの章だけで25P割かれていますので、Web構築でMTと付き合う人はこの部分だけでも見ておくと良いと思います。


と、いいことばっかり書いたのですが(!?)以下、感想。

まず、冒頭のエディタのところですが、僕はTextWrangler派です。

ローカル環境のところでXAMPPがあってMAMPがないのはやっぱり人口の問題かな? Web系のMac比率結構高いように思うんだけど。

内容については、これ「入門」とありますが、一応MT脳? というか少なくともテンプレートを自分で組んだことのない人には理解出来ないところ多いと思います。文章の中で特にPerlに慣れていない人向けに“気を配った(?)”表現が出てくるのですが、やっぱりそこで「?」となる人が出てくるかもしれません。

ちなみに、Web屋さん向けコードだったら(PHP人口が多いので)。

  • 「最後に評価された値が返る」ってのを直感的に理解してくれない時があるので常に「return $hoge;」とする
  • 「$hogehoge || return $fuga;」ではなく「unless ( $hogehoge ) { return $fuga }」のように書く(もっと気を遣うときは if ( $hogehoge eq '' ) { } else { return $fuga } )とか書く

とかすると何となく理解してくれやすい(気がします)。

あと、僕のようなノンプログラマがハマリがちなのが以下のようなコードで、

my $entry = MT::Entry->new;
$entry->title( 'Hello' );
$entry->text( 'Hello World!' );
$entry->save;

って実際にやると保存できなくて(author_id,blog_idとstatusがnot nullなので)泣きたくなってあきらめちゃう、みたいなことがあると思うので(かといって項目が多いと難しそうになるし、このあたりは難しいところですけど)、サンプルコードは絶対動くヤツがいいと思います!

あ、最後のページ(288P)で僕のエントリー紹介してくれてますね。ありがとうございます!

とにかく、

サイト構築等を仕事でやっていてMTでサイト構築する人は一冊買っておきましょう!

トラックバック(1)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/23

ダイナミックパブリッシング対応のプラグイを作るたしか純生さんのブログにあったよう... 続きを読む

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2009年5月19日 17:13に書いたブログ記事です。

ひとつ前のブログ記事は「俺42歳。」です。

次のブログ記事は「携帯電話から使うMTベースのTwitter風マイクロブログ。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6