« Ubuntu。 | メイン | MTのカテゴリーアーカイブのパスを得る。 »

MovableTypeのプレビュー機能を改良するStylePreviewプラグイン(改良)。

以前公開したものはテンプレートを正規表現で置換するというものだったのだが、

<$MTBlogName$>, <$MTBlogDescription$>, <$MTBlogURL$>, <$MTEntryTitle$>, <$MTEntryBody$>, <$MTEntryMore$>, <$MTEntryKeywords$>, <$MTEntryExcerpt$> の各テンプレートタグをそれぞれの内容に置き換えて表示確認をする。それだけ。それ以外のテンプレートタグは無視(削除)される。フィルター系のプラグインは効かない。

MTらしくないしちゃんと「Build」させたいということでlib:MT:App:CMS.pmを眺めていたら「ああ...なるほどなぁ」という感じ。やっぱりもう少しドキュメントを充実させて欲しい。こんどProNetミーティングというものに参加してみようと思っているのでそのあたりも伝えられれば。

テンプレート指定→build部分の処理は以下のような感じ。今回のはきちんとフィルター系のプラグインも動作する。

my $tmap = MT::TemplateMap->load(
						{	blog_id => $blog_id,
							archive_type => 'Individual',
							is_preferred => 1
						},);

# 優先度の高いエントリーアーカイブのテンプレートをロードする
my $template = MT::Template->load({id => $tmap->template_id});
my $preview_tmpl = $template->text;
my $entry = MT::Entry->new;
$entry->blog_id($blog_id);

# 要するに, 保存しない状態でMT::EntryオブジェクトをつくってBuildする

my $ctx = MT::Template::Context->new;
$ctx->stash('entry', $entry);
$ctx->stash('blog', $blog);
$ctx->stash('blog_id', $blog->id);
my $build = MT::Builder->new;
my $tokens = $build->compile($ctx, $preview_tmpl)
	or return $app->error($app->translate(
		"Parse error: [_1]", $build->errstr));
defined(my $html = $build->build($ctx, $tokens))
	or return $app->error($app->translate(
		"Build error: [_1]", $build->errstr));

エントリー編集画面から「確認」をクリックすると完全な状態でプレビュー画面が表示される。

確認画面のキャプチャ

* MT4対応についてはBeta4の時点での動作しか確認できていません。MT4正規版対応については現在作成中です。

カテゴリー: MovableType

トラックバック

この一覧は、次のエントリーを参照しています: MovableTypeのプレビュー機能を改良するStylePreviewプラグイン(改良)。:

» My MovableTypeのご紹介。 送信元 Junnama Online (Mirror)
最初にMTに触れてから1年強、自分で触り出してから半年くらい。僕には「アーミーナ... [詳しくはこちら]

» MovableType3.3と4.0の両方に対応したTransformerプラグインの書き方。 送信元 Junnama Online (Mirror)
各所で話題の? Transformerプラグインが4.0で動作しない! 件 (あ... [詳しくはこちら]

トップページ | アーカイブ(このブログの全てのエントリーの一覧)

About

2007年03月31日 17:05に投稿されたエントリーのページです。

ひとつ前の投稿は「Ubuntu。」です。

次の投稿は「MTのカテゴリーアーカイブのパスを得る。」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

広告

Powered by
Movable Type 3.34