ฉันได้ใช้ กำหนดการ โมดูลด้วย การรวมการกลั่นกรองเนื้อหา เพื่อเผยแพร่เนื้อหาโดยอัตโนมัติ มันทำงานได้อย่างสมบูรณ์แบบโดยใช้โมดูล ตอนนี้ฉันต้องการเพิ่มฟังก์ชันที่เมื่อเผยแพร่เนื้อหาผ่าน cron แล้ว อีเมลจะถูกส่งไปยังผู้เขียนเนื้อหานั้น
ฉันได้ใช้ hook_scheduler_publish_action
เพื่อดำเนินการนี้ แต่น่าเสียดายที่ฉันกำลังเผชิญกับสถานการณ์ที่แตกต่างออกไป
- ถ้าฉันลบรหัสเผยแพร่โหนดและเก็บเฉพาะรหัสการส่งจดหมาย จดหมายนั้นจะถูกไล่ออก
- ถ้าฉันลบรหัสการส่งจดหมายและเก็บเฉพาะรหัสเผยแพร่โหนด โหนดนั้นจะถูกเผยแพร่
- ถ้าฉันเก็บทั้งสองอย่าง จะส่งเฉพาะเมลเท่านั้น เนื้อหาจะไม่ถูกเผยแพร่
อ้างอิง: https://git.drupalcode.org/project/scheduler/blob/8.x-1.x/scheduler.api.php
โค้ดด้านล่างเป็นเพียงการเผยแพร่เนื้อหาไม่ใช่การส่งอีเมล
ฟังก์ชัน MYMODULE_scheduler_publish_action (NodeInterface $node) {
// สถานะการดูแลโหนดจะเป็น 'เผยแพร่'
$node->set('moderation_state', 'เผยแพร่แล้ว');
$node->save();
// ส่งอีเมลถึงผู้เขียน
$mail_params = อาร์เรย์(
'mail_subject' => 'เรียกใช้ cron',
'mail_body' => '<p>โหนดเผยแพร่โดยใช้ตัวกำหนดตารางเวลา</p>',
'mail_to' => '[email protected]'
);
\Drupal::service('MYMODULE.common_service')->FunctionToSendEmail($mail_params);
}
โค้ดด้านล่างเป็นเพียงการส่งอีเมลไม่ใช่การเผยแพร่เนื้อหา
ฟังก์ชัน MYMODULE_scheduler_publish_action (NodeInterface $node) {
// ส่งอีเมลถึงผู้เขียน
$mail_params = อาร์เรย์(
'mail_subject' => 'เรียกใช้ cron',
'mail_body' => '<p>โหนดเผยแพร่โดยใช้ตัวกำหนดตารางเวลา</p>',
'mail_to' => '[email protected]'
);
\Drupal::service('MYMODULE.common_service')->FunctionToSendEmail($mail_params);
// สถานะการดูแลโหนดจะเป็น 'เผยแพร่'
$node->set('moderation_state', 'เผยแพร่แล้ว');
$node->save();
}
นั่นหมายความว่า hook นี้จะทำการกระทำแรกเท่านั้นและไม่สนใจการกระทำอื่น ๆ
ตอนนี้คำถามของฉันคือฉันจะดำเนินการหลายอย่างโดยใช้ hook นี้ได้อย่างไร หรือมีขั้นตอนอื่นในการทำเช่นนี้หรือไม่
โปรดช่วยฉันด้วย ขอบคุณล่วงหน้า.