Назрел вопрос... Как можно реализовать чат для общения пользователей меж собой на сайте. Веб-форм не получается, комментарии не то, модуль Privatemsg не подошел.
Есть ли готовое решение этой задачи и куда копать? Функционал общения должен быть аналогичен тому как это реализовано на сайте авито, чтобы пользователь мог отправлять и получать сообщение непосредственно из представления.
Создание чата подобного как на avito.ru
Главные вкладки
Лучший ответ
Смотри что у меня
Я создаю пользователя с ролью Психолог (там заполняю поле email)
захожу под этой ролью
у меня есть тип контента Психолог где есть много полей и одно из полей" Емейл для уведомлений "
В это поле я ставлю значение по умолчанию [current-user:mail], так я зашел по ролью и у меня до этого поле email было заполнено, то оно дублируется
сохраняю материал
В Views вывожу это поле и переопределяю его в форму как писалось выше
Комментарии
Для таких чатов нужна еще серверная часть. Например, nodejs
а еще какие варианты есть?
nodejs поставлю конечно..
https://www.drupal.org/project/tawkto
https://www.drupal.org/project/live_chat_for_drupal
https://www.drupal.org/project/elfsight_all_in_one_chat
https://www.drupal.org/project/drupalchat
Однако, как показывает статистика их использований - чаты не очень популярны на сайтах
Да, благодарю за предложенные варианты, но это все не то, их я уже проверила. Мне нужен диалог как на сайте avito, а тут просто чаты.
Я пробую настроить персональную контактную форму, в принципе мне будет достаточно того, что пользователь сможет отправить личное сообщение автору со страницы с представленным материалом но при отправке письма автору вылетает ошибка:
LogicException: Render context is empty, because render() was called outside of a renderRoot() or renderPlain() call. Use renderPlain()/renderRoot() or #lazy_builder/#pre_render instead. in Drupal\Core\Render\Renderer->doRender() (line 243 of core/lib/Drupal/Core/Render/Renderer.php).
Подозреваю, что проблема с модулем contact либо contact-storage. Решений нет этого вопроса, все модули и ядро обновлены до крайней версии. Вопрос висит не решенный.
https://www.drupal.org/project/private_message
Благодарю за совет, но этот вариант я уже потестила, он мне не подошел - для того, чтобы отправить сообщение автору материала, отправителю нужно ввести имя автора. Я пока не смогла никак привязать имя автора из материала к этому полю. Возможно есть какие-то варианты но у меня этот, на первый взгляд, простой вопрос не решается ни посредством вебформ ни теми модулями, что можно найти по этой теме.
Там из коробки есть поле, которое привязано к автору материала и можно писать личное сообщение
да, благодарю! Это работает! Ваша подсказка мне очень помогла и я обязательно так-же попробую второй вариант с веб-формой.
И с помощью веб формы можно решить, сделал ссылку ввида /form/zayavka-na-konsultaciyu?famaly={{ title }}&email={{ mail }}, со скрытым полем и передачей параметров
с вебформой нужно ее еще настроить правильно, не просто ссылку написать.Если нужна будет помощь пишите
Здравствуйте! Благодарю за помощь, пригодилась.
У меня получилось настроить веб-форму со скрытым полем темы.
В представление вывела блок с текстом (ссылкой на форму) с запросом этого поля в url, все отрабатывает письмо приходит, но приходит оно на эл. адрес сайта, а цель отправить его автору материала.
В настройках веб-формы в обработчике электронной почты я так и не поняла как указать e-mail или задать переменную, чтобы потом ее заменить в представлении на автора материала.
В токенах нет подобных полей, а в пользовательском адресе электронной почты можно указать только определенный адрес.
Настройка ссылки из Views
Настройка вебформы
И емейл получателя скрытое поле
Да, именно этого поля и не хватало.
Теперь письма летят куда следует! Благодарю за оперативную помощь!
Заметила, что отправление идет только из аккаунта администратора, в пользовательском аккаунте письмо получает пустое поле вместе адреса эл. почты. Есть ли какие-то особые разрешения для этого? В правах и доступах формы выставила максимальные разрешения но это не помогло.
Над формой повисло сообщение - Only webform administrators are allowed to access this page and create new submissions.
Попробуй в настройках views настроить доступ. Поставить без ограничений
Добрый день! Этот вариант я уже проверила, не сработал, открыла все максимально.. для теста вывела во вьюхе поле с email и вижу, что оно отображается только в аккаунте админа, в пользовательском аккаунте оно скрыто.. пойду копать права, потому, как в веб-форме тоже все доступы открыты
Ну по сути поле user: email доступно только для админов. В настройках доступа посмотрите права
или переопределить поле в другом типе материалов и вставить значение по умолчанию токен поля user: email
Вариант с открытием доступа для управления пользователю всеми пользователями отпадает однозначно.. Пробую припилить токен, но что-то не получается.
создала новый тип материала, добавила текстовое поле и по умолчанию поставила user:email, такого токена в представленных вариантах у себя я не вижу...
Создала новое представление, добавила блок, вывела это поле, оно естественно пустое.
Добавила этот блок в представление из которого я вызываю веб-форму, далее не понимаю что с этим делать. Добавить отношение, тип материала? Поле остается пустым.
"Управление пользователями
Предупреждение: это право связано с безопасностью сайта. Предоставляйте это право только пользователям той роли, которым вы доверяете. Управлять всеми учётными записями пользователей. Включая всю пользовательскую информацию, изменение email адресов и паролей, письма к пользователю, блокирование и удаление учётных записей." - пришлось открыть доступ, только так работает.)
Проверю вариант с токеном еще.
Ну да , опасный вариант, нужно другое решение
меня вот это еще смущает, над формой висит сообщение - Only webform administrators are allowed to access this page and create new submissions.
Установила - "Разрешить пользователям публиковать материалы с выделенного URL", как временное решение, я вижу, что есть патч для решения этого тоже.
Вот модуль
https://www.drupal.org/project/field_default_token
токен будет такой [current-user:mail]
модуль для 7 друпала, поставила аналог для 8 версии - https://www.drupal.org/project/field_token_value
К сожалению в представлении емайл не показывается
может что-то нужно поставить в контекстный фильтр?
Есть и для 8 field_default_token
Смотри что у меня
Я создаю пользователя с ролью Психолог (там заполняю поле email)
захожу под этой ролью
у меня есть тип контента Психолог где есть много полей и одно из полей" Емейл для уведомлений "
В это поле я ставлю значение по умолчанию [current-user:mail], так я зашел по ролью и у меня до этого поле email было заполнено, то оно дублируется
сохраняю материал
В Views вывожу это поле и переопределяю его в форму как писалось выше
Добрый день! Хочу поблагодарить за помощь еще раз)) Вот так получилось без предоставления доступа к управлению пользователями. Новую роль я не создавала, мне не требуется, но принцип тот-же. Работает с токеном!))
установила, но емайл не могу вытащить, остальные поля отображаются как положено, предполагаю, что в настройках фильтра что-то не доделываю
токен срабатывает?
в представлении я его не вижу, как проверить, что он срабатывает, ведь в новом созданном типе материала он стоит по умолчанию и там одно поле.
Либо я должна его добавить в тип материала объявлений откуда я пытаюсь вызвать форму?)
Вы же создали новый тип материла! Зайти в меню Content и посмотреть этот материал и что выводит созданное поле mail
Посмотреть саму страницу созданную нового типа материала
Я так и не понял чем вам не подошёл Private Messages, что пришлось городить костыли с webform, если они никак для этого не предназначены
Private Messages, работает но его - нужно привести в порядок, внешний вид вывода сообщений идет одним потоком без стилей и разделений сообщений от отправителя и получателя - друг под другом. Я должна с этим еще разобраться, а веб-форма временное решение.
Очень странное решение.
Добавить рамочки и отступы к сообщениям - 5 минут, 4 минуты искать style.css темы.
Вы на вебформ уже потратили больше времени
добавила, но они одинаково применяются ко всем сообщениям потока, нужно внедрять в шаблон вывода свои стили.
С токеном работает, но путь получается открытый в строке браузера светится майл получателя - .../form/dobavit-obyavlenie?product=Тест&email=admin%40xxxxx.ru
Переопределить поле в шаблоне и использовать события js
если не трудно, подскажите как?
views-view-field--last_quiz--block_1--field_image.html.twig
last_quiz имя вьюса
block_1 или page_1 отображение
field_image поле где ссылка
в шаблоне пишете
{{ output -}} или текст ссылки
блин срезало
<a href="#" onclick="javascript:document.location.href='АДРЕС'" id="btn1">Текст ссылки</a>
Здравия! У меня такой вариант почему-то не сработал, ссылка формируется из запросов и к сожалению все-равно отображается в строке браузера.
Сделай по другому! Создай поле ссылка на сущность, выбери вебформа!
В настройках поля напиши в значение по умолчанию картинка
В управление отображением формы отключи его, а в управлением отображением сможешь вывести и ссылкой, и в модальном окне, также в Views. и вебформа будет привязана к конкретному материалу
https://github.com/jez500/Private-Message-Messenger
Private Message в стиле фейсбук
интересно, проверю..
Добрый вечер))) это снова я...
Ставлю Private-Message-Messenger по ссылке по инструкции.
с MarionetteJS проблем не возникло, библиотечки и модуль встали, а при установке связанного модуля Selectize.js вылетает ошибка -
Notice: Undefined index: description in drupal_check_module() (line 1057 of /var/www/u0331xxx/data/www/xxxxxxxxxx.ru/core/includes/install.inc).
<?php // Print any error messages
foreach ($requirements as $requirement) {
if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
$message = $requirement['description'];
if (isset($requirement['value']) && $requirement['value']) {
$message = t('@requirements_message (Currently using @Item version @version)', ['@requirements_message' => $requirement['description'], '@Item' => $requirement['title'], '@version' => $requirement['value']]);
}?>
я на этом этапе застряла полностью...
вопрос решился, переименованием файла в библиотеке с selectize.js на selectize
Как теперь удалить не рабочий модуль private_message_messenger и все сопутствующие к нему, они все взаимосвязаны получились с private_message и ни один нельзя удалить, галочка не активна на всех связанных модулях?
Нужно начать с субмодулей. После их деинсталляции будет доступна и деинсталляция основного модуля.
в данном случае оказалось на оборот, субмодули не хотели удаляться, а сам модуль позволил себя удалить, ну и остальное потом тоже удалила, вылетела пару ошибок но после очистки кэша я их не вижу больше. Я вспомнила, что эти модули и устанавливались в том-же порядке.
Не может быть такого. Возможно, вы путаете что от чего зависело.
хотел написать посмотрите путь
/libraries/selectize/dist/js/selectize.min.js
Расскажите потом как запустился модуль, я еще просто не запускал и не смотрел.Стоит ли ставить
Приветствую!
Потестила Модуль Private Message Messenger - не завелся((
Библиотеки подключены и задействованы.
Если перейти по ссылке в месенджер, висит пустая страница:
New Message
Загрузка...
Если следовать инструкции в связанном модуле
https://github.com/jez500/Drupal8-Marionette-JS
Добавляю запись в мою тему - adapt.libraries.yml в виде:
dependencies:
- marionettejs/marionettejs
Не уверенна, что правильно ее поняла, но это не помогло.
Хорошо, модуль поставила, буду завтра его пытать, при обновлении модулей друпаловских поля съехали, вылезло предупреждение -
В типе сущности и определениях поля обнаружены следующие изменения.
Entity Update Tests Content Entity
Поле Type должно быть установлено.
Сообщение
Поле message.field_message_pm_thread должно быть обновлено.
Поле message.field_message_private_message должно быть обновлено.
Пока не поняла как это отразится в дальнейшей работе, предупреждение висело до того как я установила
Private-Message-Messenger.
Раньше с таким не сталкивалась, ищу как исправить сейчас.
В итоге самостоятельно стилизовала Модуль Private Message, чуть позже скину стиль и скрин, может кому пригодится.
Давай
В private_message не нашла возможности добавить имеющееся поле, в связи с этим возник вопрос. Как можно добавить поле с названием материала из которого происходит переход по ссылке в личные сообщения? Есть ли какие-то решения?