TopMovable Type > バージョン別 > 5.13 > 2012年2月
2012年2月29日

Movable Type 5.13で「Template load error」になる問題について

February 29,2012 12:55 AM
Tag:[, , ]
Permalink

Movable Type 5.13で「Template load error」になる問題について、MTQフォーラムのトピックで話題になっていたので、こちらでも情報展開します。

1.問題点

Movable Type 5.13にアップグレードしたあと、ブログ記事投稿画面や他の管理画面にアクセスすると「Template load error」になる可能性があります。

Template load error

アップグレードだけでなく、MT5.13を新規インストールしたあとにプラグインをインストールした場合も同様です。

2.原因

5.13でセキュリティが強化によりテンプレート読み込み処理が変更されたため、管理画面にテンプレートを埋め込む処理を行っているプラグインを利用している場合にこの問題が発生するようです。

具体的には、テンプレートファイルを読み込むプラグインについて、読み込むテンプレートファイルのパスを明示的に指定していないと、冒頭の「Template load error」が発生します。

エラーになったプラグインのソースコードをトレースしたところ、次のような処理を行っているプラグインがこのエラーに遭遇するようです(これがすべてかどうかは不明)。

use File::Spec;
…中略…
my $plugin = $cb->plugin;
my $hoge = $tmpl->getElementById('hoge');
my $tmpl = File::Spec->catdir($plugin->path, 'tmpl', 'foo.tmpl');
my $include = $tmpl->createElement('include', { name => $tmpl });
$tmpl->insertAfter($include, $hoge);

上記の処理は、管理画面テンプレートの任意の位置(例ではid="hoge"のついたテンプレートタグの直後)にMTIncludeタグを追加し、追加したMTIncludeタグを使って、プラグインで定義しているテンプレートをインクルードするものです。

ソースコード上は見えませんが赤色のようなMTIncludeタグが追加されます。

<mtapp:setting id="hoge">
…中略…
</mtapp:setting>
<$mt:Include name="プラグインのパス/tmpl/foo.tmpl"$>

3.対処方法

一番手っ取り早い方法は、該当のプラグインを無効化すれば解消します。

問題となるプラグインが分からない場合は一旦すべてのプラグインを無効化して、1つずつ有効にしていくとよいでしょう。

以下のプラグインを利用すれば、切り分けが楽に行えるかもしれません。

MultiPluginSwitcherプラグイン
MultiPluginSwitcherプラグイン

プラグインを修正する場合は、plugin_template_pathを明示的に指定すればいいようです。先程の例では赤色部分を追加します。

use File::Spec;
…中略…
my $plugin = $cb->plugin;
$app->{plugin_template_path} = File::Spec->catdir($plugin->path,'tmpl');
my $hoge = $tmpl->getElementById('hoge');
my $tmpl = File::Spec->catdir($plugin->path, 'tmpl', 'foo.tmpl');
my $include = $tmpl->createElement('include', { name => $tmpl });
$tmpl->insertAfter($include, $hoge);

投稿したばかりですいませんが訂正です。MTQフォーラムに適切な情報が掲載されていました。上記の例であれば下記の赤色部分を追加します。

use File::Spec;
…中略…
my $plugin = $cb->plugin;
my $hoge = $tmpl->getElementById('hoge');
my $tmpl = File::Spec->catdir($plugin->path, 'tmpl', 'foo.tmpl');
my $include = $tmpl->createElement('include', { name => $tmpl, component => 'プラグイン名' });
$tmpl->insertAfter($include, $hoge);

ブログ記事投稿画面で冒頭のエラーが発生するEmoticonButtonプラグインの場合は、Plugin.pmを任意のエディタで開き赤色部分を追加します。

sub inject_button_param {
    my ( $cb, $app, $param, $tmpl ) = @_;
 
    my $footer = $tmpl->getElementById('footer_include');
    if ( $footer ) {
        my $plugin = $cb->plugin;
        require File::Spec;
        my $tmpl_path = File::Spec->catdir($plugin->path, 'tmpl', 'emoticon.tmpl');
        my $include = $tmpl->createElement('include', { name => $tmpl_path, component => 'EmoticonButton' });
        $tmpl->insertBefore($include, $footer);
    }
    1;
}

そもそもMT5ではEmoticonButtonプラグインは動作しませんが、とりあえずエラーは解消します。

Comments [2] | Trackbacks [0]
2012年2月23日

Movable Type 5.13リリース:新機能の紹介と変更テンプレートのまとめ

February 23,2012 1:23 AM
Tag:[, ]
Permalink

Movable Type 5.13/5.07/4.38がリリースされました。セキュリティアップデートとIE9対応などの機能追加、その他バグフィックスが行われています。

5.12がリリースされたのが昨年6月なので、約8ヶ月ぶりのアップデートになります。

[重要] Movable Type 5.13 および、5.07、4.38 セキュリティーアップデートの提供を開始
Movable Type 5.13リリース

Movable Type 5.1の個人無償版は以下のページを辿ってダウンロードできます。

Six Apart - Movable Type 5 購入・ライセンスについて - 個人無償ライセンス

MTOS 5.1は以下のページからダウンロードできます。

Movable Type オープンソース・プロジェクト

以下、新機能とアップグレード時の作業などを紹介します。特に6項の「アップグレード時に変更が必要なテンプレート」についてはご注意ください。

1.ブラウザ対応

以下のブラウザに対応するようになりました。

  • Internet Explorer 9
  • Firefox 最新版
  • Safari 最新版

2.認証ロックアウト機能

認証ロックアウト機能が追加されました。一定回数以上ユーザー・パスワードを間違えると、ユーザーのアカウントがロックされます。これは

  • mt.cgi
  • mt-comment.cgi
  • mt-cp.cgi

を利用したログインが対象となります。ロックアウトが発生した場合、システムログに記録されます。なお、外部認証によるログインはこの機能の対象外です。

認証ロックアウト機能追加により、以下の環境変数が追加されました。

  • UserLockoutLimit
    UserLockoutIntervalで指定した秒数の間に失敗するロックアウト回数
  • UserLockoutInterval
    UserLockoutLimitで指定したロックアウト回数をカウントする期間
  • IPLockoutLimit
    IPLockoutIntervalで指定した秒数の間に失敗するロックアウト回数
  • IPLockoutInterval
    IPLockoutLimitで指定したロックアウト回数をカウントする期間
  • LockoutIPWhitelist
    ロックしないIPアドレスをホワイトリスト形式で指定
  • LockoutNotifyTo
    ユーザーがロックされた場合に、通知メールを送信する管理者のauthor_idを設定
  • LockoutExpireFrequency
    ログイン失敗のレコードを自動的にデータベースから消去する期間を指定

詳細は以下をご覧ください。

不正ログインに対するアカウントのロック

3.パスワード検証のルール化

ユーザーがログインに利用するパスワードに以下の条件を指定できるようになりました。

  • 大文字に小文字の両方を含める。
  • 文字と数字の両方を含める。
  • 記号(!"#$%&'(\|))*+,-./:;<=>?@[\]^_`{|}~)を含める
  • 最低文字数(初期値は8文字)

パスワード検証をコミュニティ機能で利用するための以下のテンプレートタグが追加されました。

下記の環境変数も追加されました。

詳細は以下をご覧ください。

パスワードの検証ルール

4.パスワードの暗号化方式の変更

パスワード暗号化のハッシュ関数が変更されました。これまで先頭の8桁までしか識別されませんでしたが、9桁以上も識別されるようになります。

5.機能変更

セキュリティ対策の一環で、MTIncludeタグのfileモディファイアが無効化されました。fileモディファイアを有効にするために以下の環境変数が追加されました。

また、環境変数DeniedAssetFileExtensionsに下記の4種類が追加されました。

  • .pm
  • .so
  • .rb
  • .htc

6.アップグレード時に変更が必要なテンプレート

今回のアップグレードでは、ブログまたはコミュニティ掲示板にコメントするための、ユーザー登録とログイン認証に関するテンプレートを変更する必要があります。

公式サイトでも変更対象のテンプレートが掲載されていますが、表でまとめてみました。

◎:必須/△:任意/-:該当なし
テンプレート種別テンプレート名5.135.074.38該当テーマ
インデックステンプレートJavaScriptすべて
スタイルシートPico
テンプレートモジュールコメント入力フォームコミュニティブログ
ヘッダープロフェッショナルウェブサイト
プロフェッショナルブログ
システムテンプレートコメントプレビュークラシックブログ
クラシックウェブサイト
Pico
グローバルテンプレート
(テンプレートモジュール)
GlobalJavaScriptコミュニティブログ
コミュニティ掲示板
フォームフィールドコミュニティブログ
コミュニティ掲示板
グローバルテンプレート
(システムテンプレート)
プロフィールコミュニティブログ
コミュニティ掲示板
ログインフォームコミュニティブログ
コミュニティ掲示板
プロフィールの編集フォームコミュニティブログ
コミュニティ掲示板
新しいパスワードの設定フォームコミュニティブログ
コミュニティ掲示板
登録フォームコミュニティブログ
コミュニティ掲示板

上のテーブルではみにくいのでこちらの表もご利用ください。

変更テンプレート一覧

テンプレートを変更する方法は、テンプレート単位またはテンプレート種別で「初期化」を実行するだけです。ただしテンプレートをカスタマイズしていて安易に初期化できない場合は以下のページを参照して、個別に修正してください。

5.13、5.07、4.38 のテンプレート変更の詳細

また、スマートフォンオプション、およびモバイルパックに含まれるSmart Blog テーマもアップデートされています。

7.開発者向け

以下のコールバックが追加されました。

Comments [0] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3