- Регистрация
- 21 Мар 2025
- Сообщения
- 15
- Реакции
- 50
Продвинутая система общения между пользователями.
Модуль реализован по принципу чата, где сообщения обновляются в режиме реального времени.
За основу внешнего вида взят интерфейс телеграма и адаптирован в рамках web интерфейса и возможностей DLE.
Данный модуль я делал очень продолжительное время. Постоянно что-то переделывал или добавлял. Вот буквально на днях перед релизом добавил еще один достаточно интересный функционал для использования ЛС в качестве обратной связи с администрацией сайта. Но лучше распишу все по порядку.
Большая просьба полностью ознакомиться с описанием модуля. Практически на все вопросы вы сможете найти ответы в этой статье.

На главной странице всегда отображается сайдбар и пустой "контент". Если у группы пользователей есть ограничение на количество сообщений, то в верхней части будет отображаться прогресс бар. Если ограничений нет, то и прогресс бара соответственно тоже не будет:

В сайдбаре есть кнопка меню, поиск и список пользователей.
Еще важный момент. Верстка модуля сделана с поддержкой адаптивности, на мобильных устройствах главная страница будет принимать следующий вид:

Меню и поиск опишу отдельно. Список пользователей формируется и сортируется по дате последнего сообщения, входящего или исходящего. При этом новые не прочитанные сообщения будут всегда в начале списка.
В строке пользователя указывается: полное имя (или логин), дата последнего сообщения, логин и группа пользователя.
Так же на аватарке в виде кружочка показывается статус пользователя.
Список собеседников обновляется на AJAX с заданным интервалом. При получении нового сообщения в заголовок страницы будет дописано количество новых сообщений.


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

Думаю вы обратили внимание, что исходящих сообщений 8, а из них не прочитанных 13. Такое возможно когда пользователь написал сообщение и удалил его. А принимающая сторона еще не прочитала. Поэтому получается, что фактически в исходящих сообщения нет, но в реальности оно есть у принимающей стороны и оно еще не прочитано.

При клике на крестик выскочит стандартное окно подтверждения действия. При клике на сам блок профиля будет выполнен переход на страницу диалога с пользователем. При клике на иконку пользователей в левой колонке будет показан текущий список собеседников для быстрого перехода к диалогу.



Версия 1.0.10
Версия 1.0.13 (спасибо @Alex12345)
Модуль реализован по принципу чата, где сообщения обновляются в режиме реального времени.
За основу внешнего вида взят интерфейс телеграма и адаптирован в рамках web интерфейса и возможностей DLE.
Данный модуль я делал очень продолжительное время. Постоянно что-то переделывал или добавлял. Вот буквально на днях перед релизом добавил еще один достаточно интересный функционал для использования ЛС в качестве обратной связи с администрацией сайта. Но лучше распишу все по порядку.
Большая просьба полностью ознакомиться с описанием модуля. Практически на все вопросы вы сможете найти ответы в этой статье.
Особенности
- Модуль доступен только по реальному адресу example.com/pm/
- У каждой беседы свой URL: example.com/pm/Логин_Пользователя/
- Адаптивная верстка
- Совместимость со стандартными ЛС. Достаточно установить модуль и все старые сообщения будут отображаться в чате
- Очень простая установка
- Все действия выполняются на AJAX (за исключением перехода по страницам)
- Можно запретить пользователям общаться друг с другом и использовать модуль только как обратную связь с заданным списком пользователей.
- На 98% открытый исходный код.
- Никакого html в php файлах. Все в шаблонах.
- Русская и Английская локализация. Можно легко добавить свой языковый файл. Но в шаблонах нужно будет вручную менять тексты.
Главная страница

На главной странице всегда отображается сайдбар и пустой "контент". Если у группы пользователей есть ограничение на количество сообщений, то в верхней части будет отображаться прогресс бар. Если ограничений нет, то и прогресс бара соответственно тоже не будет:

В сайдбаре есть кнопка меню, поиск и список пользователей.
Еще важный момент. Верстка модуля сделана с поддержкой адаптивности, на мобильных устройствах главная страница будет принимать следующий вид:

Меню и поиск опишу отдельно. Список пользователей формируется и сортируется по дате последнего сообщения, входящего или исходящего. При этом новые не прочитанные сообщения будут всегда в начале списка.
В строке пользователя указывается: полное имя (или логин), дата последнего сообщения, логин и группа пользователя.
Так же на аватарке в виде кружочка показывается статус пользователя.
Список собеседников обновляется на AJAX с заданным интервалом. При получении нового сообщения в заголовок страницы будет дописано количество новых сообщений.

Меню пользователя

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

Думаю вы обратили внимание, что исходящих сообщений 8, а из них не прочитанных 13. Такое возможно когда пользователь написал сообщение и удалил его. А принимающая сторона еще не прочитала. Поэтому получается, что фактически в исходящих сообщения нет, но в реальности оно есть у принимающей стороны и оно еще не прочитано.
Игнорируемые пользователи

При клике на крестик выскочит стандартное окно подтверждения действия. При клике на сам блок профиля будет выполнен переход на страницу диалога с пользователем. При клике на иконку пользователей в левой колонке будет показан текущий список собеседников для быстрого перехода к диалогу.

Поиск пользователей
Я очень старался сделать его удобным и наглядным, надеюсь у меня получилось.
- Поиск выполняется на AJAX.
- В качестве даты отображается дата последнего посещения.
- В списке выполняется подсветка искомого слова.
- Поиск и подсветка выполнятся сразу и в полном имени и в логине.
- Приоритет поиска идет по логину. У кого ближе к началу искомая фраза тот выше в выдаче, затем сортировка по алфавиту
- Поиск выполняется автоматически при вводе текста, с задержкой 600мс. Но можно нажать Enter, тогда поиск будет выполнен мгновенно.
Окно чата

- В верхней части указан профиль собеседника, справа в кружочке количество сообщений в беседе (скриншот сделан из профиля test).
- В основном окне чата полагаю все и так понятно, последнее сообщение еще не прочитано собеседником, поэтому помечено красной полоской.
- Между списком сообщений и формой ввода видна красная полоска, это визуализация обратного отсчета до следующего обновления чата. Полоску при желании можно легко убрать в шаблоне.
- Редактор можно использовать любой стандартный: BB, FroalaEditor или TinyMCE.
- Если пользователь отсутствовал некоторое продолжительное время, обновление чата будет приостановлено для предотвращения выполнения ненужных запросов, время можно поменять в настройках
- Меню своего сообщения
- Меню сообщения собеседника, отличие - отсутствие возможности редактирования и есть возможность пожаловаться. При удалении сообщения будет выскакивать окно подтверждения действия
- При редактировании сообщения редакторы не отображаются, но используется обработчик BB редактора.
- При получении нового сообщения от другого (не текущего) пользователя, в левой колонке будет показано число новых сообщений
- Развернутый список пользователей, текущий пользователь выделен.
Поиск работает так же как на главной. - Архив сообщений отображается на отдельной странице, в нем ограниченный функционал, отображаются сразу все сообщения от новых к старым.
- Можно массово удалить выбранные сообщения
- Иконка стирательной резинки позволяет полностью удалить все сообщения в текущем диалоге.
- При клике на кнопку игнора редактор прячется
- Если же сам пользователь находится в игноре у получателя будет следующее сообщение:
- При желании можно приостановить автообновление чата или обновить чат вручную с помощью иконок
- В зависимости от настроек можно выключить или наоборот включить звук новых сообщений
- Иконка ниже позволяет в 2 раза увеличить высоту чата для удобства чтения длинных сообщений.
- Запоминается состояние кнопок сайдбара: "Список пользователей", "Приостановить обновление", "Без звука" и "Развернуть".
Настройки
- 'limit' => 100, - максимальное видимое количество сообщений в текущем диалоге
- 'search_limit' => 20, - максимальное количество отображаемых пользователей при поиске
- 'online_time' => 10, - сколько минут бездействия считать пользователя онлайн
- 'interval' => 7, - интервал между обновлениями чата
- 'offline' => 1, - через сколько минут бездействия переводить чат в оффлайн режим
- 'main_interval' => 10, - интервал обновления списка пользователей на главной странице модуля
- 'allow_ignore' => true, - разрешить использовать игнорирование (в случае запрета, кнопки и тексты в шаблоне нужно будет убрать вручную)
- 'soundoff' => 0, - выключить звук. Т.е. по умолчанию изначально кнопка отключения звука будет активной
- 'stopupdate' => 0, - выключить автообновление чата.
- 'allow_search' => true, - разрешить использовать поиск пользователей на сайте
- 'send_email' => true, - отправлять на почту уведомление о новом сообщении.
- 'email_subj' => 'Новое персональное сообщение', - заголовок/тема письма
- 'pm_subj' => 'Новое ЛС', - модулем не используется, но т.к. используется стандартная таблица для хранения писем - необходимо указывать заголовок письма. Да и в шаблоне email сообщения используется тема.
- 'feedback_only' => false, - запретить пользователям общаться между собой, только с заданными списком контактов
- 'feedback_users' => [], - через запятую логины пользователей которым можно писать сообщения, если включен параметр выше
Шаблоны
- 404.tpl - страница ошибки, если указан не существующий URL или пользователь
- dialog.tpl - страница диалога
- dialog_item.tpl - шаблон сообщений (включая разделитель-дату)
- editor.tpl - форма редактора
- ignore.tpl - страница игнорируемых пользователей
- index.tpl - индексная страница, основная оболочка
- main.tpl - главная страница
- menu.tpl - меню профиля пользователя
- userlist.tpl - шаблон пользователя в списке
Информация
- Для работы модуля требуется ionCube Loader v.6.x и старше (для PHP 7.x версия куба должна быть 10.x)
- Версия DLE: 10.1 - 17.1 (На старых версиях DLE рекомендуется использовать только BB редактор)
- Версия PHP: 5.4 - 8.2 (кроме 8.0)
- Кодировка: UTF-8
- Купить на сайте автора: https://sandev.pro/shop/143-dialogpm-by-sander.html
Версия 1.0.10
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
Версия 1.0.13 (спасибо @Alex12345)
Последнее редактирование модератором: