ฉันต้องการส่ง/แสดงข้อความในมุมมองบล็อกในโปรไฟล์ผู้ใช้เมื่อสร้างโหนดประเภทเนื้อหาบางประเภท แต่เฉพาะในกรณีที่ผู้ใช้รายนั้นเปิดใช้ฟิลด์ที่กำหนดเองในโปรไฟล์ของตนเท่านั้น
ฉันได้สร้างเทมเพลตข้อความและใช้ 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();
}
}
ปัญหาเกี่ยวกับรหัสของฉันคือบล็อกแสดงข้อความที่เหมือนกันหลายข้อความ (หนึ่งข้อความสำหรับการวนซ้ำแต่ละครั้ง)
ฉันจะบรรลุได้อย่างไรว่าเฉพาะผู้ใช้ที่เปิดใช้งานฟิลด์แบบกำหนดเองเท่านั้นที่จะได้รับข้อความ