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

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

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

<$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正規版対応については現在作成中です。

トラックバック(2)

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

最初にMTに触れてから1年強、自分で触り出してから半年くらい。僕には「アーミーナ... 続きを読む

各所で話題の? Transformerプラグインが4.0で動作しない! 件 (あ... 続きを読む

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2007年3月31日 17:05に書いたブログ記事です。

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

次のブログ記事は「MTのカテゴリーアーカイブのパスを得る。」です。

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

Powered by Movable Type 6.2.6