PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > テンプレート作成Tips > テンプレートのデバッグ(テンプレート変数を調べたりテンプレートのビルド時間を計測する)

2012年09月26日

テンプレートのデバッグ(テンプレート変数を調べたりテンプレートのビルド時間を計測する)

Movable Type や PowerCMS のテンプレートでは、テンプレート変数( mt:var または mt:getvar で取得したり mt:if タグで分岐したりするのに利用される変数)を使ってプログラミングライクな処理を書くことができます。

デバッグに使えるテンプレートタグ

テンプレート変数やサーバー環境変数、Cookie、クエリーパラメタを調べる

複雑な処理を書いていると、「思うように値が出ない」といったケースに遭遇することもあるかもしれません。そんな時、変数の一覧が取得できたら良いと思ったことはありませんか? PowerCMS(※)ではいくつかのテンプレートのデバッグ用のタグが利用可能です。いずれもスタティック/ダイナミックの両方に対応しています。

※ GitHubで単独のプラグインとしても公開しています。 PowerCMS 3.0 以降では標準機能となっておりプラグインを追加することなく利用できます。

MTVarDump(ファンクションタグ)

テンプレート変数の一覧を表示します。例えば以下のようなものです。

{
  'page_columns' => 3,
  'page_layout' => 'layout-wtt',
  'entry_template' => 1
}
MTQueryDump(ファンクションタグ)

クエリーパラメタもしくはポストされたパラメタを取得します。例えば以下のようなものです。

{
  '__mode' => 'preview_template',
  '_type' => 'template',
  'action_input' => '',
  'action_name' => '',
  'blog_id' => '1',
  'build_type' => '1',
  'current_revision' => '0',
  'id' => '',
  'identifier' => '',
  'linked_file' => '',
  'magic_token' => 'ghEDLjA7KkzXUXQDjROqOKKWZnXc9CRnkLmB5Bwz',
  'name' => 'Dumper',
  'outfile' => 'dump.html',
  'pager' => '0',
  'rebuild' => '',
  'return_args' => '__mode%3Dview%26_type%3Dtemplate%26type%3Dindex%26blog_id%3D1',
  'revision-note' => '',
  'save_revision' => '1',
  'shift_jis' => '0',
  'text' => '%3CMTEnvDump%3E%0D%0A%3CMTVarDump%3E%0D%0A%3CMTCookieDump%3E%0D%0A%3CMTQueryDump%3E',
  'type' => 'index'
}
MTEnvDump(ファンクションタグ)

サーバー環境変数の一覧を表示します。

MTCookieDump(ファンクションタグ)

クッキーの一覧を表示します。

特定ブロックのテンプレートビルド時間を計測する

テンプレートが複雑になると、再構築処理時間やダイナミックパブリッシングでの処理時間がかかるようになります。SpeedMeter プラグインを利用することで、特定のテンプレートブロックのビルド処理に何秒かかっているかを計測できますので、どの部分がボトルネックになっているかを調査することができます。

※ SpeedMeter の機能は、PowerCMS 5 では PowerStudio プラグインに実装されております

MTSpeedMeter(ブロックタグ)

計測したブロックをMTSpeedMeterタグで囲みます。

<MTSpeedMeter
    name="ブログ記事の一覧">
<MTEntries>...</MTEntries>
</MTSpeedMeter>

以下のようなメッセージがシステムログに保存されます。

'ブログ記事の一覧'をビルドしました。処理時間: 1.0230250358581543

mt-config.cgi に SpeedMeterDebugScope 環境変数を指定することで、ページに出力することも可能です。SpeedMeterDebugScope には「Log(デフォルト)」「Screen(ビルドした結果に出力する)」「None(何もしない)」を設定可能です。Screenを指定した場合、prefix,suffixモディファイアを指定可能です(メッセージの前後に挿入されるテキストを指定)。

<MTSpeedMeter
    name="ブログ記事の一覧" prefix='<div class="debug">' suffix='</div>'>
<MTEntries>...</MTEntries>
</MTSpeedMeter>

カテゴリー
DynamicMTML
サポート
テンプレート作成Tips
トラブルシューティング

Recent Entries