Score:0

วิธีที่ดีในการส่งการแจ้งเตือนทางอีเมลเมื่อสร้างเอนทิตีใหม่คืออะไร

ธง hk

ฉันพยายามดูว่าวิธีใดดีที่สุดในการจัดการการแจ้งเตือนที่กำหนดเองรอบๆ คำติชมของเว็บไซต์ โมดูล. โมดูลสร้างเอนทิตีใหม่ประเภท WebsiteFeedback (เอนทิตีแบบกำหนดเองที่กำหนดโดยโมดูล) เมื่อใดก็ตามที่ผู้ใช้ส่งคำติชมโดยใช้โมดูล

เข้าใจแล้ว การแจ้งเตือนเอนทิตี โมดูล แต่ดูเหมือนว่าจะไม่มีการเปิดตัว Drupal 9

มีบางอย่างพร้อมสำหรับ Drupal 9 หรือไม่?

Jaypan avatar
de flag
โมดูลกฎควรทำสิ่งนี้ให้คุณ
apaderno avatar
us flag
ฉันลงคะแนนให้ปิดคำถามนี้เนื่องจากเป็นการขอคำแนะนำเกี่ยวกับการโฮสต์ หนังสือ เครื่องมือ โมดูล ธีม การแจกจ่าย บทช่วยสอน หรือทรัพยากรนอกสถานที่อื่นๆ
fr flag
วิธีแก้ไขปัญหาโดยใช้กฎมีบันทึกไว้ที่นี่: https://www.drupal.org/docs/8/modules/d8-rules-essentials/examples/email-examples/sending-html-email สิ่งที่คุณต้องทำคือนำเข้ากฎนั้น และใช้ UI เพื่อปรับเปลี่ยนเล็กน้อยสำหรับกรณีการใช้งานของคุณ
Score:1
ธง cn

หากคุณต้องการเขียนโค้ดด้วยตนเอง นี่คือตัวอย่างง่ายๆ ในการส่งอีเมลแจ้งเตือนทุกครั้ง ก ความคิดเห็น มีการโพสต์เอนทิตี (นำมาจากไซต์จริงที่มีการล้างข้อมูลเล็กน้อย แต่ฉันอาจมีบางอย่างที่ดึงรหัสเฉพาะไซต์ออกมา):

ฟังก์ชัน mymodule_comment_insert (ความคิดเห็น $entity) {
  mymodule__mail_notify_admin('new_comment', $entity, '', 'insert');
}

ฟังก์ชัน mymodule_mail_notify_admin($key, $entity, $title, $moderation_state) {
  $mailManager = \Drupal::service('plugin.manager.mail');
  $module = 'โมดูลของฉัน';
  $to_email = '[email protected]';
  $path = $entity->toUrl('canonical', ['absolute' => TRUE])->toString();
  $params['message'] = $เส้นทาง;
  $params['title'] = $title;
  $params['moderation_state'] = $moderation_state;
  $langcode = \Drupal::currentUser()->getPreferredLangcode();

  $result = $mailManager->mail($module, $key, $to_email, $langcode, $params);
  ถ้า ($result['result'] !== TRUE) {
    $message = t('เกิดข้อผิดพลาดในการส่งอีเมลแจ้งไปที่ @email.', ['@email' => $to_email]);
    \Drupal::logger('mymodule')->error($message);
    กลับ;
  }
  อื่น {
    $message = t('ส่งอีเมล์แจ้งเตือนไปที่ @email', ['@email' => $to_email]);
    \Drupal::logger('mymodule')->notice($message);
  }
}

/*
 * สำหรับการอ้างอิง:
 * http://valuebound.com/resources/blog/how-to-send-mail-programmatically-drupal-8
 */
ฟังก์ชัน mymodule_mail($key, &$message, $params) {
  $message['จาก'] = \Drupal::config('system.site')->get('mail');

  สวิตช์ (คีย์ $) {
    กรณี 'new_comment':
      // https://www.drupal.org/project/simple_comment_email_notification
      $message['subject'] = t('ความคิดเห็นใหม่');
      $message['body'][] = t('คุณสามารถตรวจสอบเพจได้ที่ :unapprovedCommentsUrl สำหรับความคิดเห็นที่ไม่ผ่านการอนุมัติ และ :publishedCommentsUrl สำหรับความคิดเห็นที่เผยแพร่แล้ว', [
        ':unapprovedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() '/admin/content/comment/approval',
        ':publishedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() '/ผู้ดูแลระบบ/เนื้อหา/ความคิดเห็น',
      ]);
      หยุดพัก;

    ค่าเริ่มต้น:
      ตัวเลือก $ = [
        'langcode' => $message['langcode'],
      ];
      // @todo แก้ไขการหลบหนี HTML
      // $message['body'][] = Html::escape($params['message']);.
      $message['body'][] = $params['message'];
      $message['subject'] = t('@title @ms บนไซต์ของฉัน',
        [
          '@ms' => $params['moderation_state'],
          '@title' => $params['title'],
        ]
        ตัวเลือก $);
      หยุดพัก;
  }
}
fr flag
กฎช่วยให้คุณทำสิ่งเดียวกันได้โดยไม่ต้องเขียนและดูแลรหัสของคุณเอง บวกกับกฎที่คุณมี UI ซึ่งจะช่วยให้คุณสามารถแก้ไขเวิร์กโฟลว์ได้อย่างง่ายดายหากความต้องการของคุณเปลี่ยนไป นอกจากนี้ ด้วย Rules คุณไม่ต้องกังวลเกี่ยวกับการเขียนรหัสอีเมลของคุณเอง ซึ่งอาจเกิดข้อผิดพลาดได้ง่ายและซับซ้อน ตัวอย่างเช่น ต้องการใช้ HTML ในอีเมลของคุณหรือไม่ ไม่ใช่ด้วยรหัสด้านบน ... กฎก็เหมือนกับ Views แต่สำหรับเวิร์กโฟลว์ แน่นอนว่าคุณสามารถเขียนคิวรีโค้ดแบบกำหนดเองของคุณเองลงในฐานข้อมูลเพื่อแสดงสิ่งที่คุณต้องการได้ แต่ Views นั้นใช้งานและบำรุงรักษาได้ง่ายกว่าสำหรับกรณีการใช้งานส่วนใหญ่ เช่นเดียวกับกฎ
cn flag
@ ไม่ระบุชื่อ แน่นอนว่ากฎเป็นทางออกหนึ่ง แต่บางคนไม่ต้องการเชื่อถือโมดูลที่มีเฉพาะเวอร์ชันอัลฟ่าสำหรับวงจรชีวิตของ Drupal 8 ทั้งหมด สำหรับบางคน ความปลอดภัยเป็นสิ่งสำคัญ
fr flag
แล้วอะไรคือความปลอดภัยระหว่างโค้ดที่กำหนดเองกับโค้ดที่ใช้/ทดสอบโดยไซต์นับพัน ทัศนคติเช่นนั้นคือสาเหตุที่โมดูลส่วนใหญ่มุ่งตรงไปที่รีลีส "เสถียร" แม้ว่าจะไม่มีการทดสอบ ไม่มีเส้นทางการอัปเกรดระหว่างเวอร์ชัน "เสถียร" และมีการเปลี่ยนแปลง BC-breaking ระหว่างรีลีสจุดย่อย ไม่มีอะไร "คงที่" เกี่ยวกับพวกเขายกเว้นชื่อ และไม่ว่าชื่ออื่น ๆ พวกเขาก็จะเหม็นแย่เหมือนกัน (ขออภัยเชกสเปียร์)การเป็นผู้บริโภคที่มีการศึกษานั้นคุ้มค่า และหากคุณตัดสินเพียงแค่ว่ารุ่นนั้น "เสถียร" หรือไม่ แสดงว่าคุณกำลังหลอกตัวเอง คำนั้นไม่มีความหมาย
cn flag
ฉันไม่ได้พูดว่า "เสถียร" ฉันพูดว่า **ครอบคลุมความปลอดภัย** โมดูลอัลฟ่า = ไม่อยู่ภายใต้นโยบายการเปิดเผยข้อมูลด้านความปลอดภัยของ drupal.org อยู่ในอัลฟ่าเพื่ออะไร หกปีแล้วเหรอ? และอาจมีการเปิดเผยซีโร่เดย์เมื่อใดก็ได้
cn flag
กฎเป็นโมดูลที่ซับซ้อนและเปิดพื้นผิวการโจมตีขนาดใหญ่หากคุณต้องการเพียงแค่ส่งอีเมล ไม่ได้บอกว่าเป็นวิธีที่ผิด แต่แน่นอนว่าไม่ใช่วิธีที่ปลอดภัยที่สุดและปลอดภัยที่สุดในการติดตั้งโมดูลอัลฟ่าโดยอัตโนมัติ
fr flag
เห็นได้ชัดว่าฉันไม่เห็นด้วย แต่นี่ไม่ใช่สถานที่ที่จะพูดคุยเรื่องนี้ อย่างไรก็ตาม คุณคิดผิดโดยสิ้นเชิงที่บอกว่า Rules ไม่ครอบคลุมความปลอดภัย - จริงอยู่
cn flag
@ไม่ระบุชื่อ ฉันยินดีที่จะแก้ไขหากฉันพูดอะไรที่ไม่ถูกต้องตามความเป็นจริง คุณช่วยกรุณาให้ลิงก์ไปยังส่วนที่ระบุว่ากฎสำหรับ D8/9 มีความคุ้มครองด้านความปลอดภัยได้ไหม ฉันเพิ่งตรวจสอบหน้าโมดูลกฎและข้อความแจ้งว่า `การเผยแพร่ที่เสถียรสำหรับโครงการนี้ครอบคลุมโดยนโยบายคำแนะนำด้านความปลอดภัย' นี่เป็นเพียงต้นแบบของ drupal.org แต่ไม่มีการกล่าวถึงข้อยกเว้นพิเศษของการครอบคลุมด้านความปลอดภัยสำหรับกฎ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา