วิธีใช้ [การส่ง: ค่า] ในเทมเพลตอีเมลใน Webforms


9

ฉันเปิดใช้งานโมดูล Webform 7.x-4.0-alpha6 แล้ว

ฉันมีโหนด Webform พร้อมองค์ประกอบของฟอร์ม 20 รายการ ฉันเพิ่มอีเมลหนึ่งในการตั้งค่าอีเมล์และฉันสร้างแม่แบบอีเมลที่ผมใช้โทเค็น: [ส่ง: ค่า]

จากนั้นฉันทดสอบเว็บฟอร์มที่ส่งข้อความ ปัญหาคือ[การส่ง: ค่า]พิมพ์ค่าส่วนประกอบในวิธีที่ธรรมดามากไม่มีการแบ่งบรรทัดไม่มีเซมิโคลอนเพื่อสร้างความแตกต่างระหว่างชื่อเรื่องและค่าสำหรับแต่ละองค์ประกอบ สิ่งที่ต้องการ:

Name Jhon
Addresss Myaddress 12 
CP 19932
....

การมี 20 องค์ประกอบทำให้อีเมลไม่สามารถอ่านได้อย่างสมบูรณ์

คำถามของฉันคือ:มีวิธี (โทเค็น) ในการพิมพ์ในวิธีที่ดีกว่าอย่างน้อยเพิ่มอัฒภาคระหว่างชื่อและค่าและทำให้ชื่อตัวหนา ? หรือเอาท์พุทในตาราง?

    Name: Jhon
    Addresss: Myaddress 12 
    CP: 19932

ฉันรู้ว่าฉันสามารถพิมพ์ส่วนประกอบในวิธีที่แยกกันโดยใช้โทเค็น: [webform: {component} -title] สำหรับหัวเรื่องและ [webform: {component} -value] สำหรับค่า

และจากนั้นฉันสามารถสไตล์พวกเขา แต่นี่เป็นการเสียเวลาเนื่องจากฉันต้องการให้ส่วนประกอบทั้งหมดแสดงในแม่แบบอีเมล

อัปเดต: ฉันพบโมดูลนี้ แต่ไม่ได้ช่วยฉัน: http://drupal.org/project/webform_tokens

คำตอบ:


10

ฉันไม่มีปัญหาดังกล่าว แต่ฉันรู้วิธีรับค่าพิเศษจากเว็บฟอร์ม

โทเค็นของเว็บฟอร์มจากข้อมูลที่ส่ง รวมค่าและเลเบลของฟิลด์ แทนที่ " ?" ด้วย " Field Key " ผนวก " :nolabel" เพื่อความคุ้มค่า

ดังนั้นคุณสามารถใช้[submission:values:?:nolabel]ซึ่ง?เป็นคีย์ฟิลด์ขององค์ประกอบของคุณ

 Name: [submission:values:name:nolabel]
 Address: [submission:values:address:nolabel]

สำหรับฉันผลลัพธ์เหมือนกับ[submission:values]:

ชื่อ: Kate
ที่อยู่: Moscow, Russia :)

รุ่นของเว็บฟอร์ม: 7.x-4.0-alpha6 (7404)

ไม่จำเป็นต้องใช้โมดูล Webform Tokens

ปรับปรุง

หากคุณใช้จดหมาย HTML ระบบจะแสดงป้ายกำกับผ่านtheme_form_element_labelและมีลักษณะ<label>Title</label>\nดังนี้

webform-submission.tpl.phpคุณสามารถแทนที่ admin/config/system/mailsystemคัดลอกแฟ้มนี้ไปยังรูปแบบสำหรับการแสดงผลอีเมลจาก
หากต้องการเพิ่ม:ฉันขอแนะนำเพียงแค่ปรับเปลี่ยนอาร์เรย์การแสดงผล:

if ($format == 'html') {
  foreach ($renderable as $i => $item) {
    if (is_array($item) && !empty($item['#title'])) {
      $renderable[$i]['#title'] .= ':';
    }
  }
}

print drupal_render_children($renderable);

แต่คุณสามารถเอาท์พุทการทดแทนได้อย่างเต็มที่ด้วยตัวคุณเอง


2
สิ่งที่คุณพูดเป็นตัวเลือกที่ถูกต้อง แต่ฉันต้องทำซ้ำชุดนี้ 20 ครั้ง ฉันกำลังมองหาหนึ่งบรรทัดเพื่อส่งออกส่วนประกอบทั้งหมด 20 รายการพร้อมกัน
chefnelone

@chefnelone ฉันอัปเดตคำตอบของฉัน
kalabro

ฉันคิดว่าคุณสนิท แต่ ... ฉันแค่ใช้ฟังก์ชัน dpm สำหรับ $ renderable array และไม่มีรายการ $ ['# title'] อยู่ภายใน บางทีคุณอยู่ใน webform version 3 ฉันใช้ version 4 beta6 ดูการจับภาพของฉัน: content.screencast.com/users/chefnelone/folders/Snagit/media/
......

1
รหัสของคุณถูกต้อง เป็นเพียงฉันซ้อนส่วนประกอบเว็บฟอร์มและฉันจะต้องเปลี่ยนบรรทัดนี้if (is_array($item) && !empty($item['#title'])) {เพื่อให้ทำงานได้
chefnelone


0

โปรดทราบว่าหากคุณใช้องค์ประกอบกริดคุณต้องเรียกโทเค็นนั้นด้วยทั้งฟิลด์คีย์และคีย์คำถาม มักใช้กริดหากคุณทำแบบสำรวจและขอให้ผู้คนให้คะแนนบางอย่างในระดับ 1-3 โดยใช้ปุ่มตัวเลือกสำหรับแต่ละแถวเช่น:

ตัวอย่างคำถาม:

จัดอันดับสิ่งต่อไปนี้ด้วย 1 = สูง 3 = ต่ำที่สุด

+---------------+-----+-----+-----+
|   Breweries   |  1  |  2  |  3  |
+---------------+-----+-----+-----+
| Lighthouse    | [o] | [o] | [o] |
| Phillips      | [o] | [o] | [o] |
| Whistler      | [o] | [o] | [o] |
+---------------+-----+-----+-----+

หากต้องการพิมพ์ค่าของคำตอบของคำถามเพียง 2 คุณจะใช้: ค่า
เบียร์คำถาม 2 คือ: [การส่ง: ค่า: my_beer_field: phillips]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.