JavaScript、Ajax、HTML5(API)、Ruby…Web及び関連技術の実験&情報公開&制作物紹介。

コンテナタグとグローバルフィルター

| トラックバック(1)

Movable Type は、全てのページをスタティック(静的)に生成するモードと、一部のページをダイナミック(動的)に生成するダイナミック・パブリッシングモードを選べます。
それぞれ利点・弱点があり、両方混在することもできるのが特徴の一つですが、同じテンプレートでスタティック・ダイナミック両方に対応できるのも特徴の一つだと思います。

と思っていたのですけれど、一つ、気になる非互換性を発見してしまいました。
簡単にまとめると、以下が判明しました。

  • スタティックページでは、コンテナタグへのグローバルタグアトリビュート(グローバルフィルター)の適用が有効
  • ダイナミックページでは、コンテナタグへのグローバルタグアトリビュート(グローバルフィルター)の適用が無効

【追記: 2006/09/14】この情報は、MT3.2のものです。MT3.3ではこの問題は解消されています。

拙作の単純プラグイン Span は、グローバルフィルターを範囲指定して適用させることに主眼を置いて作成したプラグイン(コンテナタグ)なのですが、これがうまくいくのは、どうやらスタティックの場合だけのようです。
尤も、現在提供しているコンテナタグはスタティック用のもののみ(Perlで作成したプラグインのみ)であり、ダイナミックページを生成するテンプレート中で<MTSpan>タグを使用すれば「そんなブロックタグはないよ」みたいなエラーになってしまうのですが、PHPで同じような動作をするブロックタグを定義しても、期待した動作をしない模様です。

そもそもスタティックページ生成とダイナミック・パブリッシングは、ベースがPerlとPHPという、基本的なアーキテクチャが異なります。
私の感覚としては、ダイナミック・パブリッシング機能が、Perlによるスタティック生成をPHPでエミュレートしたもの、という感じ。
でもやはり、互換性には無理があるようです。

て言いますか。
そもそも「ブロックにフィルターを適用する」という私の考えが邪道なのかも?

ちなみに。
Span のPHP版(ダイナミック対応版)のソースは、こんな感じでOK:

<?php # block.MTSpan.php
function smarty_block_MTSpan($args, $content, &$ctx, &$repeat) {
    return $content;
}
?>

トラックバック(1)

あんちもん2.Lab - コンテナタグとグローバルフィルター on MT3.3x (2006年9月14日 19:47)

MT3.3xでは、ダイナミックページでは、コンテナタグへのグローバルタグアトリビュート(グローバルフィルター)の適用が有効になりました。 続きを読む

カテゴリ

月別 アーカイブ

OpenID対応しています OpenIDについて

このブログ記事について

このページは、あんちもん2が2006年7月 7日 10:14に書いたブログ記事です。

ひとつ前のブログ記事は「ダイナミック・パブリッシングがうまくいかない」です。

次のブログ記事は「レンタルサーバで複数のMTをインストールする方法」です。

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