Рейтинг:0

Отправить сообщение пользователям с определенным полем, включенным с модулем сообщений

флаг ru

Я хотел бы отправить/отобразить сообщение в представлении блока в профиле пользователя, когда создается какой-либо узел типа контента, но только если у этого пользователя есть определенное настраиваемое поле, включенное в его профиле.

Я создал шаблон сообщения и использовал hook_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');
    $сообщение->сохранить();
  }
}

Проблема с моим кодом еще и в том, что блок выводит несколько одинаковых сообщений (по одному на каждую итерацию).

Как я могу добиться того, чтобы только пользователи с включенным настраиваемым полем получали сообщение?

Jaypan avatar
флаг de
Итак, вы хотите показывать сообщение только текущему пользователю, если у него включено это поле?
leymannx avatar
флаг ne
Любопытно, может быть, лучше реализовать логику сообщений с помощью Queue API. Я имею в виду, конечно, в зависимости от того, сколько пользователей вы ожидаете зациклить позже.
Bass-Ninja avatar
флаг ru
@Jaypan да, я знаю. Сообщение должно быть показано только тем, у кого поле включено.
Jaypan avatar
флаг de
Текущий пользователь или все пользователи с включенным полем? Это разные вещи.
Bass-Ninja avatar
флаг ru
@Jaypan Все пользователи с включенным полем.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.