Score:0

ส่งข้อความถึงผู้ใช้โดยเปิดใช้บางฟิลด์ด้วยโมดูลข้อความ

ธง ru

ฉันต้องการส่ง/แสดงข้อความในมุมมองบล็อกในโปรไฟล์ผู้ใช้เมื่อสร้างโหนดประเภทเนื้อหาบางประเภท แต่เฉพาะในกรณีที่ผู้ใช้รายนั้นเปิดใช้ฟิลด์ที่กำหนดเองในโปรไฟล์ของตนเท่านั้น

ฉันได้สร้างเทมเพลตข้อความและใช้ hook_node_insert() เพื่อส่งข้อความ แต่ปัญหาคือมันส่งข้อความนี้ไปยังผู้ใช้ทั้งหมดหากฉัน (ในฐานะผู้ดูแลระบบ) เปิดใช้งานฟิลด์ที่กำหนดเองหรือไม่ได้เปิดใช้งานหากฉันปิดใช้งาน

ตะขอของฉันมีลักษณะดังนี้:

ฟังก์ชันการแจ้ง_node_insert(โหนด$) {
  $ids = \Drupal::entityQuery('ผู้ใช้')
    ->เงื่อนไข('field_notify_me_about_new_events', '1')
    ->ดำเนินการ ();

  $users = User::loadMultiple($ids);
  foreach ($users เป็น $user) {
    $message = Message::create([' template' => 'new_event', 'uid' => $node->getOwnerId()]);
    $message->set("field_node_ref", 'uid');
    $message->save();
  }
}

ปัญหาเกี่ยวกับรหัสของฉันคือบล็อกแสดงข้อความที่เหมือนกันหลายข้อความ (หนึ่งข้อความสำหรับการวนซ้ำแต่ละครั้ง)

ฉันจะบรรลุได้อย่างไรว่าเฉพาะผู้ใช้ที่เปิดใช้งานฟิลด์แบบกำหนดเองเท่านั้นที่จะได้รับข้อความ

Jaypan avatar
de flag
ดังนั้นคุณต้องการแสดงข้อความต่อผู้ใช้ปัจจุบันหากพวกเขาเปิดใช้งานฟิลด์นั้นหรือไม่
leymannx avatar
ne flag
สงสัยว่าการทำลอจิกข้อความด้วย Queue API จะดีกว่าไหม ฉันหมายถึงขึ้นอยู่กับจำนวนผู้ใช้ที่คุณคาดว่าจะวนซ้ำในภายหลัง
Bass-Ninja avatar
ru flag
@Jaypan ใช่ฉันทำ ข้อความควรแสดงต่อผู้ที่เปิดใช้งานฟิลด์นี้เท่านั้น
Jaypan avatar
de flag
ผู้ใช้ปัจจุบันหรือผู้ใช้ทั้งหมดที่เปิดใช้งานฟิลด์นี้ สิ่งเหล่านี้แตกต่างกัน
Bass-Ninja avatar
ru flag
@Jaypan ผู้ใช้ทั้งหมดที่เปิดใช้งานฟิลด์

โพสต์คำตอบ

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