Drupal → Уведомление администратора о новых комментариях

07.01.2011

Код отправляет уведомление о новых комментариях на ящик admin_mail@gmail.com

Drupal 8

// MODULENAME.module

/**
 * Implements hook_ENTITY_TYPE_insert(): comment.
 */
function MODULENAME_comment_insert(CommentInterface $comment): void {
  if ($comment->getOwnerId() != 1) {
    \Drupal::service('plugin.manager.mail')->mail(
      'MODULENAME',
      'new_comment',
      'admin_mail@gmail.com',
      \Drupal::languageManager()->getCurrentLanguage()->getId(),
      ['comment' => $comment]
    );
  }
}

/**
 * Implements hook_mail().
 */
function MODULENAME_mail(string $key, array &$message, array $params): void {
  if ($key == 'new_comment') {
    $comment = $params['comment']; /** @var CommentInterface $comment */

    $message['subject'] = "{$comment->getAuthorName()} оставил комментарий в теме {$comment->getCommentedEntity()->label()}";
    $message['body'][] = $comment->get('comment_body')->value;
  }
}

Drupal 7

// MODULENAME.module

/**
 * Implements hook_comment_insert().
 */
function MODULENAME_comment_insert($comment) {
  if ($comment->uid != 1) {
    drupal_mail('MODULENAME', 'new_comment', 'admin_mail@gmail.com', language_default(), $comment);
  }
}

/**
 * Implements hook_mail().
 */
function MODULENAME_mail($key, &$message, $params) {
  if ($key == 'new_comment') {
    $node = node_load($params->nid);

    $message['subject'] = $params->name . ' оставил комментарий в теме ' . $node->title;
    
    $body .= trim($params->comment_body['und'][0]['value']) . "\n\n";
    $body .= url('node/' . $params->nid, array('absolute' => true));
    $message['body'][] = $body;
  }
}
Написанное актуально для
Drupal 7, Drupal 8
Похожие записи

Комментарии

А куда код-то вставлять?
И еще: подскажите, как реализован у вас блок "Последние комментарии?

О, спасибо) уже все написано, оказывается)

Гость
13.11.2012, 14:25

А разве нельзя через триггеры это все реализовать? Также никто не отменял модуль правил.

Хоть у кого то верный подход к программированию, а то все rules да trigger советуют.

Gorecmagic
25.11.2015, 03:42

Понравился вопрос Юрия, постоянно задаюсь таким же вопросом когда вижу php код. =)

Добавить комментарий