PowerCMS™

PowerCMS ブログ

ホーム > PowerCMS ブログ > テンプレートタグを使ってテンプレート変数の内容をシステムログで把握する

2021年10月08日

テンプレートタグを使ってテンプレート変数の内容をシステムログで把握する

テンプレートタグを使ってテンプレート変数の内容を把握する

以前に、 テンプレートのデバッグ(テンプレート変数を調べたりテンプレートのビルド時間を計測する) という記事で、テンプレート変数の内容を出力する MTVarDump や、パラメータの内容を出力するテンプレートタグ MTQueryDump をご紹介しています。

これらのテンプレートタグは、特にテンプレートタグを扱う制作者にとって非常に有用です。これらのタグによって出力される内容は内部的な情報のため把握しづらいことが多く、またそれが明らかになれば構築や調査が大幅に楽になります。

しかし、デバッグ用の情報が出力されるのが好ましくない状況も存在します。ウェブサイトのコンテンツであれば、コメントアウトでソースコードに出力することでブラウザに無視させることができますが、例えば運用中のテキストメールの内容や、アーカイブマッピングにテンプレートを使う場合のように、出力することで問題が発生する可能性のある場面が挙げられます。

テンプレートタグを使ってシステムログに出力する

そんなときは、これまたテンプレートタグを使って、管理画面のシステムログに出力するとよいでしょう。下記の記事でご紹介しているテンプレートタグ MTLog が役立ちます。

※ 「MT Studio」は、PowerCMS 5 では「Power Studio」という名前で同梱されております。また、管理上、プラグインを格納しているディレクトリの名前から「Developer」プラグインと呼ばれることがあります

例えば下記のように記述することで、MTVarDump タグがビルドされたときのテンプレート変数の内容をシステムログに出力することができます。

<MTSetVarBlock name="var_dump_text"><MTVarDump raw="1"></MTSetVarBlock>
<MTLog message="$var_dump_text">

下記のような内容が得られます(ブログ記事化にあたり、一部内容を見やすく変更しています)。例えば <mt:Var name="archive_class"> は「archive_class」を出力し、配列である field_loop は <mt:Loop name="field_loop">〜</mt:Loop> のようにループ処理することが可能です。

{
  'archive_class' => 'page-archive',
  'archive_template' => 1,
  'blog_id' => 4,
  'confirm_ok' => 1,
  'field_loop' => [
    {
      '__counter__' => 1,
      '__first__' => 1,
      '__last__' => undef,
      'field_basename' => 'bootstrap_name',
      'field_description' => '',
      'field_html' => [フォーム項目の HTML],
      'field_label' => [フォーム項目のラベル],
      'field_type' => 'text',
      'field_value' => 夏目 漱石,
    },
...

例えば、お問い合わせフォーム投稿時に送信されるメールのテンプレート内に下記のように記述することで、メールの内容を汚すことなく POST 送信された内容をシステムログに出力することができます。

<MTSetVarBlock name="query_dump_text"><MTQueryDump></MTSetVarBlock>
<MTLog message="$query_dump_text">

下記のようにパラメータの内容を得ることができます(ブログ記事化にあたり、一部内容を見やすく変更しています)。

{
  '__mode' => 'submit',
  'blog_id' => 4,
  'bootstrap_email' => 'natsume@example.com',
  'bootstrap_name' => '夏目 漱石',
  'bootstrap_text' => '吾輩(わがはい)は猫である。',
  'id' => [フォームのID],
  'identifier' => '',
  'model' => 'page',
  'object_id' => [フォームを構成するウェブページのID],
  'sessid' => ''
}

カテゴリー
PowerCMS 5

Recent Entries