PowerCMS™

[セミナー情報]【東京開催】PowerCMS X 1.1 リリース説明会を行います。

PowerCMS ブログ

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

2012年09月26日

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

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

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

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

※GitHubで単独のプラグインとしても公開しています。

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プラグインを利用することで、特定のテンプレートブロックのビルド処理に何秒かかっているかを計測できますので、どの部分がボトルネックになっているかを調査することができます。

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