提出物を電子メールで送信する複数のWebフォームを持っています。私はそれを畑に分けてきれいに保つ必要があります。
私のウェブフォームに、Zip_codeという名前のフィールドがあるとします。ラベルなしでトークンに印刷するにはどうすればよいですか?
ありがとうございました。
編集:私は組み込みの(しかし文書化されていない)機能を使用したい
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]
他にも使用できるものがたくさんあることがわかります。
これがあなたの質問に答えることを願っています。
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
}
}
}
?>