エンジニアブログ

エンジニアブログ
MT技術情報

第2回 Movable Type 勉強会 開催しました(1)

photo.jpg onagatani 2011年08月20日

onagataniです。

本日開催させて頂いたMovable Type 勉強会の内容を早速ブログにメモべースですがUPさせて頂きます。

■藤本様のセッション

MTプラグインとは
 MTの機能を拡張するプログラム

できること
 テンプレートタグの追加
 グローバルモディファイアの追加
 独自の管理画面の追加
 既存の管理画面のカスタマイズ
 テーブルフィールドの追加
 データベースに独自テーブルの追加
 各種コールバック
 テキストフィルタ
 スパムフィルタ
 etc。。。 なんでもできます

プラグインの基本的な配置
 MTディレクトリ
  pluginsディレクトリ
   config.yaml
   libディレクトリ
   プラグイン毎のディレクトリ
    *.pmファイル
   tmplディレクトリ
    *.tmpl

config.yamlファイル
 プラグインの各種情報を記述
  作者情報やプラグインの情報
  管理画面に追加するメニューの追加
  mt.cgiに追加する処理に記述
  追加するテンプレートタグの情報
  追加するフィールド情報
  etc...
 
  yamlで記述

yamlの概要
 データ構造を簡潔に記述
 データ構造を配列・ハッシュ・値だけで表す
 ハッシュのキーと値はコロンで表す
 配列の要素はマイナス
 など。

 YAMLの例

 name: プラグイン名
 id: プラグインID
 description: プラグイン概要
 author_name: 作者名
 author_link: 作者のサイトアドレス
 plugin_link: プラグインのページアドレス
 version: バージョン番号
 ・・・他色々

テンプレートタグの追加
 IloveSapporoと出力するMTLoveタグの作成

 config.yaml

 name:MTLove
 id: MTlove
 author_name: ExsampleName
 author_link: http://exsample.com
 description: I love Sapporo
 plugin_link: http://exsample.com/plugin/
 etc...

package MTLove::Plugin;
use strict;

sub love {
my ($ctx, $args) = @_;
return 'I love sapporo';
}

1;

■コールバック

MTのコアの処理の節目にプラグインの処理を追加する仕組み
MTの処理を部分的に置き換える際に使用

以下のようなタイミングで発動
 オブジェクトを保存する直前
 オブジェクトを削除する直前
 etc...

作成するプラグイン
 ブログ記事中の全角英数字と全角起動を半角記号に変換
 タイトル・本文・続き・概要・キワードを変換

ソースコードは中略します。