web-dev-qa-db-ja.com

電子メールのWebformトークン:例が必要

提出物を電子メールで送信する複数のWebフォームを持っています。私はそれを畑に分けてきれいに保つ必要があります。

私のウェブフォームに、Zip_codeという名前のフィールドがあるとします。ラベルなしでトークンに印刷するにはどうすればよいですか?

ありがとうございました。

編集:私は組み込みの(しかし文書化されていない)機能を使用したい

3
mtro

Webforms> E-mails> E-mail templateで、Custom Templateを選択します。

[submission:values]トークンを削除します。これは、すべてのフィールドとその値をラベル付きでリストするものです。必要に応じて他のテキストをカスタマイズします。

「利用可能なトークンを参照」に注意してください。テキストボックスの下のリンク。これにより、メールを作成するためにどのプレースホルダーを配置できるかを示すウィンドウがポップアップします。ブラウズトークンポップアップをクリックして、テキストフィールドに追加することもできます。一部はそのまま使用できます。一部には、フィールドトークンなどの追加情報が必要です。

フィールド値はSubmissionヘッダーの下にあります。

Zip_codeフィールドの例では、以下を使用できます。

フィールドのみの場合:[submission:values:Zip_code]

ラベルのみの場合:[submission:values:Zip_code:label]

ラベルとフィールドの場合:[submission:values:Zip_code:withlabel]

他にも使用できるものがたくさんあることがわかります。

これがあなたの質問に答えることを願っています。

3
Dan Barron

Webformsのメールから空のフィールドを削除する方法を見つけるように求められました。テーマでテンプレート(webform-mail.tpl.php)を作成し、PHPをいくつか使用してしまいました。多分これはあなたが始めるのを助けるでしょう。ここで共有します。モジュール内の元のファイルを見て、使用可能な変数の詳細を確認することもできます。これらの変数の値をダンプすると、多くのことがわかります。それが私が始めた方法です。

今、私はラベルを(キャップ​​で)印刷するように頼まれましたが、あなたはそれらの線を取り出すことができます。

このコードは、UIで除外されたフィールド設定も尊重するため、ユーザーは今後、表示するフィールドと表示しないフィールドを制御できます。私はPHPおよびDrupalを初めて使用するので、これが最善の方法ではないかもしれませんが、私にとってはうまくいきました。

<?php
function email_print($text) {
  global $email;
  print ($email['html'] ? '<p>' : '') . t($text) . ($email['html'] ? "</p>\n" : "\n");
}
?>

<?php email_print('On [current-date:short] a request was submitted by [submission:user] from form [node:title]') ?>
<?php email_print('-----------------------------------------------------'); ?>

<?php

// Make sure we have a submission; avoids error in the admin UI where this file is parsed for display
if ($submission) {
  // Get excluded fields
  $excluded = array_values($email['excluded_components']);

  foreach($submission->data as $key => $field) {
    // Reset include boolean
    $include = true;

    // Get value
    $value = trim($field[0]);
    // If it's blank, don't include it
    if (strlen($value) == 0) {
      $include = false;
    }

    // If it's listed as excluded, don't include it.
    if (in_array ($key, $excluded)) {
      $include = false;
    }

    // If it should be included...
    if ($include) {
      // ...get and upcase the label...
      $label = strtoupper(trim($node->webform['components'][$key]['name']));
      // ...and print out the field.
      email_print($label);
      email_print($value);
      print "\n"; // Blank line between
    }
  }
}
?>
0
Dan Barron