В модуле Private Message (8.x-2.0-beta16) есть блок Private Message Notification.
В его настройках
Ajax refresh rate
The number of seconds between checks to see if there are any new messages...
поставил тут "2"
Этот блок показывает, что есть новое сообщение только после перезагрузки страницы. Это так и надо? Или нужно что-то через node.js делать?
Комментарии
В issues смотрел на орге? Модуль сырой, я уверен, что там полно issues
issues смотрел, но патчи, что понаписывали индийцы датируется ранним временем чем последняя версия.
Мне как бы для начала понять действительно ли это ошибка?
Хорошо, другой вопрос: а как сделать страницу /messages, как на drupal.ru?
Для начала придётся перейти на семёрку ))
Privatemsg
Да, мы недавно с коллегами этот вопрос обсуждали. Скорее всего модуль для восьмерки непопулярен и медленно разрабатывается, потому что... время личных сообщений на сайтах прошло. Серьезно. Сейчас 100500 способов общения, одних только месенджеров вагон и тележка.
Пока только так.
как так? через Node.js?
Насколько я понял, виной всему BigPipe.
Патч тут https://www.drupal.org/project/private_message/issues/3041599
При беглом тестировании работает.
Страница messages теперь делается вьюхой.
Если кто-то хочет что-то сказать - пожалуйста.
Попробуй через хуки, программно обнавлять данный блок, полагаю nodejs сервер функционирует раз задаешься этим вопросом. Например:
<?phpfunction module_entity_update(Drupal\Core\Entity\EntityInterface $entity) {
$etype = $entity->getEntityTypeId();
$type = $entity->bundle();
if ($etype == 'node' && $type == 'article') {
$subject = 'subject';
$body = 'body';
$uid = 1;
$message = (object) array(
'data' => (object) array(
'subject' => $subject,
'body' => $body,
),
'channel' => 'nodejs_user_' . $uid,
'callback' => 'nodejsNotifyModule',
);
nodejs_enqueue_message($message);
}
}?>
А в яваскрипте как то так:
Drupal.Nodejs.callbacks.nodejsNotifyModule = {
callback: function (message) {
var new_messages = $('#target').prepend(message.data.body);
Drupal.attachBehaviors(new_messages);
//$('.view-id-machine_name').trigger('RefreshView'); // так, кстати обнавляет Views, в реальном времени, но думаю это не совсем правильное использование Nodejs
}
};
})(jQuery);
А чем плохо то, что сейчас модуль предоставляет (пусть с патчем)?