tôi đã sử dụng Người lập kế hoạch mô-đun với tích hợp kiểm duyệt nội dung để xuất bản một nội dung tự động. Nó hoạt động hoàn hảo khi sử dụng mô-đun. Bây giờ tôi muốn thêm một chức năng mà sau khi nội dung được xuất bản qua cron, một email sẽ được gửi tới tác giả của nội dung cụ thể đó.
tôi đã sử dụng hook_scheduler_publish_action
để thực hiện hành động này, nhưng tiếc là tôi đang phải đối mặt với một số tình huống khác.
- Nếu tôi xóa mã xuất bản nút và chỉ giữ lại mã gửi thư, thì thư sẽ bị kích hoạt.
- Nếu tôi xóa mã gửi thư và chỉ giữ lại mã xuất bản của nút, thì nút đó sẽ được xuất bản.
- Nếu tôi giữ cả hai, chỉ thư được gửi, nội dung không được xuất bản.
Giới thiệu: https://git.drupalcode.org/project/scheduler/blob/8.x-1.x/scheduler.api.php
Mã bên dưới chỉ xuất bản nội dung, không gửi email.
function MYMODULE_scheduler_publish_action(NodeInterface $node) {
// trạng thái kiểm duyệt nút sẽ được 'xuất bản'
$node->set('moderation_state', 'published');
$node->save();
// email gửi cho tác giả
$mail_params = mảng(
'mail_subject' => 'chạy cron',
'mail_body' => '<p>nút được xuất bản bằng bộ lập lịch biểu</p>',
'mail_to' => 'ai đó@email.com'
);
\Drupal::service('MYMODULE.common_service')->FunctionToSendEmail($mail_params);
}
Mã bên dưới chỉ gửi email, không xuất bản nội dung.
function MYMODULE_scheduler_publish_action(NodeInterface $node) {
// email gửi cho tác giả
$mail_params = mảng(
'mail_subject' => 'chạy cron',
'mail_body' => '<p>nút được xuất bản bằng bộ lập lịch biểu</p>',
'mail_to' => 'ai đó@email.com'
);
\Drupal::service('MYMODULE.common_service')->FunctionToSendEmail($mail_params);
// trạng thái kiểm duyệt nút sẽ được 'xuất bản'
$node->set('moderation_state', 'published');
$node->save();
}
Điều đó có nghĩa là hook này chỉ thực hiện hành động đầu tiên và bỏ qua những hành động khác.
Bây giờ câu hỏi của tôi là làm thế nào tôi sẽ thực hiện nhiều hành động bằng cách sử dụng hook này hoặc có quy trình nào khác để thực hiện việc này không?
Làm ơn giúp tôi. Cảm ơn trước.