PowerCMS™
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[新着情報] 多要素認証設定画面の QR コードが表示されない問題への対策ファイル を追加しました。
[新着情報] PowerCMSクラウド 月額費用の価格改定に関する追加情報を公開します を追加しました。
[よくあるご質問] サポートサイトへ登録しているアカウントの情報を変更することはできますか? を追加しました。

PowerCMS ブログ

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

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