Movable Type6.3 の MTViewer(MTタグをPHPコードの中でビルドする)

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

先日、Movable Type6.3がリリースされました。

一番の変更点はダイナミックパブリッシングのPHP7サポートですが、内部的には Smartyのバージョンが2系から3系に変更になっています(PowerCMS/DynamicMTMLの対応は少々お待ち下さい)。

PHP 7 をサポート

PHP 7 を正式にサポートしました。PHP 7 は、PHP 5系と比べてもパフォーマンスの向上が期待できます。

Smarty 3.1 へアップデート

PHP 7 への対応に伴い、Smarty 2 から Smarty 3 へのアップデートされました。

プラグイン開発者へ

ダイナミック・パブリッシングに対応したプラグインについて、直接 Smarty を操作していないかぎりにおいて変更の必要は無いものと想定していますが、動作確認等よろしくお願いいたします。

※(再度) PowerCMS/DynamicMTMLの対応は少々お待ち下さい

MTViewerとは、$ctx であり Smartyである

何のことか分かる人にしかわからないアレゲな書き方ですが、つまるところMTにおけるダイナミック・パブリッシングとはMTのテンプレートをSmartyテンプレートにコンバートしてビルドするという仕組みになっています。実体は mt/php/lib/MTViewer.php です。

MTViewer.phpのコード

この MTViewerクラスの fetchメソッドがテンプレートをビルドするコードなのですが、MTタグをPHPの中で動的にビルドする方法について備忘録がてらメモしておきます。ちなみに、元がSmartyですので、これらはSmartyのテンプレートを渡しても動作します。MTテンプレートを指定した場合、mt/php/lib/prefilter.mt_to_smarty.php がMTのテンプレートをSmartyのテンプレートに変換してからビルドされます。というわけでMTViewerクラスの fetchメソッドにはMTタグをそのまま渡せるのです。

MTテンプレートをPHPコードの中でビルドする

念のためですが、$ctx の初期化については下記の記事を参照ください。

template_id 指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("mt:123");

テンプレート名(template_name) 指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("mt:テンプレート名");

テンプレート指定のビルドについては mt/php/lib/resource.mt.php で定義されています(Smartyのカスタムリソース)。 Smartyのカスタムリソースの作り方は以下のページに。カスタムリソースを作成すれば、例えば S3 に置いたMTテンプレートを指定してビルド、とかまぁ色々できるわけですね。

MTテンプレート文字列指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("eval:<mt:Date>");

ファイルパス指定でビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$str = $ctx->fetch("file:/path/to/tmpl.tpl");

テンプレート変数をセットしてビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$ctx->__stash[ 'vars' ][ 'foo' ] = 'bar';
$str = $ctx->fetch('eval:<mt:Var name="foo">');

記事コンテキストをセットしてビルド

$mt = MT::get_instance();
$ctx =& $mt->context();
$entry = $mt->db()->fetch_entry( 1 );
$ctx->stash( 'entry', $entry );
$str = $ctx->fetch('eval:<mt:EntryTitle>');

この辺りを理解しておくと、PHPでサイトを拡張していく際にMTテンプレートが活用できるようになります。例えばPHPで作成したフォームメールのテンプレートにMTタグを使ったり。ということでMT6.3の Tips でした。

トラックバック(0)

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

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2016年8月31日 14:14に書いたブログ記事です。

ひとつ前のブログ記事は「貸借対照表(B/S)のマークアップ」です。

次のブログ記事は「CMS大阪夏祭り2016で ColorTester について Lightning Talk してきました #cmsfes」です。

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

Powered by Movable Type 6.2.6