Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Новые возможности форумов » Живые темы: обновление в реальном времени


Живые темы: обновление в реальном времени

Сообщений 1 страница 20 из 22

1

Ещё одна возможность, облегчающая и делающая более удобным форумное общение

Живые темы
Автоматическая загрузка новых ответов без обновления страницы

https://forumupload.ru/uploads/0015/c4/3f/2/496388.gif

(скриншот 1)

Благодарим администрацию и пользователей форума mayak.f-rpg.me за тестирование и обратную связь!

Скрипт обеспечивает автоматическое обновление тем в реальном времени1 без необходимости обновлять страницу вручную.
Находясь на последней странице темы, вы будете сразу же получать новые сообщения от других участников. Также автоматически обновляется заголовок темы, даты публикации сообщений и список просматривающих тему.
На главной странице форума и в Активных темах информация также актуализируется в реальном времени.
На неактивной вкладке автообновление не производится, пока вкладка вновь не станет активной.

Актуально для форумов с активными обсуждениями, где новые сообщения появляются часто.

В этом описании и других источниках скрипт также может быть назван как автообновление или реалтайм.

Установка и подключение

Установочный код: в HTML низ

Код:
<!-- Обновление тем в реальном времени © Alex_63, 2025 -->
<script type="text/javascript" src="//forumstatic.ru/f/ru/bestbb/realtime.js"></script>

Рекомендуется использовать обновление тем совместно со стандартной возможностью ajax-отправки сообщений. Проверьте, включена ли опция в разделе Администрирование - Права.

Данный функционал проходит этап открытого бета-тестирования. Это значит, что возможность доступна для всех желающих: вы можете свободно установить код себе на форум и использовать его без ограничений, однако поскольку разработка экспериментальная, возможно наличие ошибок и недоработок (о них сообщайте). На этапе бета-тестирования возможность предоставляется бесплатно.

Скрипт протестирован на кроссбраузерность и совместимость с другими актуальными разработками @Alex_63.

В некоторых случаях, например при использовании устаревших скриптов (в частности, реализующих кастомные BB-коды), может потребоваться их доработка для совместимости с автообновлением. Обращайтесь к разработчику в этой теме или лично. Если вы сами разработчик, ознакомьтесь с разделом ниже (Для разработчиков).

Индивидуальное отключение автообновления

По просьбам пользователей реализована возможность индивидуального отключения автоматического обновления тем, возвращающая стандартное поведение форума.
Ссылка Отключить автообновление появится на страницах тем и поиска по темам (в том числе Активные темы и т.п.)
https://i.imgur.com/6FqCJxO.png
Установите дополнительный код ниже основного установочного кода:

Код:
<!-- Обновление тем в реальном времени: индивидуальное отключение © Alex_63, 2025 -->
<script type="text/javascript" src="//forumstatic.ru/f/ru/bestbb/realtime.disable.js"></script>
Инициализация функционала Rusff в загружаемых сообщениях

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

Для реакций:

Код:
<!-- Rusff реакции в realtime постах -->
<script>$(document).on('pun_post', function() { ReactionsPlugin.init() })</script>

Для наград:

Код:
<!-- Rusff награды в realtime постах -->
<script>
$(document).on('pun_post', function() { 
    require(["mainRouter"], function(n) {
        n.obj.GlobalModel.trigger("startApplication");
    })
 })
</script>
Для разработчиков

Для удобства взаимодействия, скрипт автообновления в момент загрузки обновлённого контента вызывает jQuery-события.
Для установки собственных обработчиков на указанные события используйте jQuery:

Код:
$(document).on('имя_события', function(event) {
    // ваш код обработчика
});

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

Событие

Описание

pun_post

Стандартное событие, вызываемое также при отправке сообщения с помощью ajax. Как в стандартном сценарии, так и при автообновлении - вызывается в момент появления нового(-ых) сообщения(-й) на странице. В случае автообновления объект event содержит свойство mode со значением 'update'. Актуально для скриптов, обрабатывающих содержимое постов.

pun_main_update

Событие, вызываемое при обновлении содержимого #pun-main на странице темы, в Активных темах или на главной странице (когда информация на странице полностью актуализирована). Актуально, если ваш скрипт как-либо видоизменяет содержимое страницы и при автообновлении нужно выполнить преобразования вновь.

Скрипт уже работает на этом форуме и mayak.f-rpg.me!

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

Копирование исходного кода и любые модификации запрещены.


Скрипт обновляется автоматически без участия пользователя.
Актуальная версия 0.1.8 (beta) от 11 января 2025.


1 Интервал получения обновлений изменяется динамически и может составлять от 25 до 120 секунд.

+8

2

Прикольная штука, поставил себе на форум :) 
Также, было бы неплохо, дать возможность юзерам полностью отключать/включать автообновление тем в своём профайле :)

0

3

Merlin777 написал(а):

Также, было бы неплохо, дать возможность юзерам полностью отключать/включать автообновление тем в своём профайле :)

Уже есть, правда включается не в профиле, а на страницах тем или поиска по темам: Индивидуальное отключение автообновления
При этом автообновление отключается полностью (с запоминанием в локальном хранилище браузера), пока не будет включено обратно.

+3

4

При добавлении сообщений автоообновление работает хорошо, но если удалить сообщение - то не обновляется.

+1

5

Merlin777
Автообновление в первую очередь нацелено на получение новых актуальных сообщений без обновления страницы. Удалённые сообщения действительно не исчезают со страницы в реальном времени, это просто не предусмотрено. Но подумаю над необходимостью, возможно и реализую в дальнейших обновлениях. Скрипт пока на этапе бета-тестирования и будет дорабатываться.

+2

6

Ещё было бы очень неплохо, если бы при прочтении новых сообщений менялся цвет  #pun-index .inew,  tr.inew и icon inew, то есть, счётчик непрочитанных сообщений,  и выделение цветом непрочитанных разделов на главной странице и тем внутри разделов  :)

0

7

Merlin777
Автообновление фиксирует изменение ID самого свежего поста в теме (или в случае главной страницы или активных тем - по всему форуму), прочтение темы само как таковое никак не фиксирует, можно конечно и это реализовать, но любое подобное усложнение логики увеличит количество запросов к серверу, пока не уверен что это того стоит. К тому же трекинг непрочитанных тем в движке сам по себе реализован весьма примитивно, над этим бы тоже в перспективе стоило поработать )

+1

8

Alex_63
я прошу не прямо сейчас всё срочно переделывать, а спокойно в будущем, если сие возможно  :)

Отредактировано Merlin777 (Чт, 27 Фев 2025 21:28:19)

+1

9

Заметил когда Приходят новые Сообщения в личку - то только после обновления страницы видно что они пришли.

0

10

Тоха
На личные сообщения действие Живых тем не распространяется и не планируется.
Для автообновления и мгновенности в личных сообщениях нужно использовать мессенджер в связке с мгновенными уведомлениями.

+1

11

На форумах RusFF почему-то когда появляется новый пост, то реакции у существующих постов дублируются.

Скриншот

Смотрите: пять плюсиков))
https://forumupload.ru/uploads/0000/14/1c/39219/619116.jpg

0

12

Alex_63
Есть проблема. Я поставил ,,Живые темы,, после установил скрипт Аватар в цитате самой последней версии. Все это работает после обновления странички в постах. Хотя обновление должно быть сразу же после отправки сообщения, подпись тоже НЕ обновляется! Вот как это выглядит до Обновления странички
https://forumupload.ru/uploads/0000/14/1c/38651/310639.jpg

Затем после обновления страницы это выглядит так:

https://forumupload.ru/uploads/0000/14/1c/38651/371507.jpg

Отредактировано Тоха (Пн, 24 Мар 2025 16:41:48)

0

13

Тоха
К сожалению, старые скрипты в большинстве своём не адаптированы под новый функционал, использующий ajax для получения новых ответов (в том числе тот, что предоставлен от сервиса - Администрирование - Права).
Для того, чтобы аватар в цитате обрабатывался в реальном времени в новых ответах, можно попробовать ниже скрипта аватарок поставить такую добавку:

Код:
<script>
$(document).on('pun_post pun_edit', function() {setTimeout(function() {setLinkAndAva('.post.new-ajax')}, 0)})
$(document).on('pun_preview', function() {setTimeout(function() {setLinkAndAva('#post-preview')}, 0)})
</script>

+1

14

Alex_63 написал(а):

Тоха
К сожалению, старые скрипты в большинстве своём не адаптированы под новый функционал, использующий ajax для получения новых ответов (в том числе тот, что предоставлен от сервиса - Администрирование - Права).
Для того, чтобы аватар в цитате обрабатывался в реальном времени в новых ответах, можно попробовать ниже скрипта аватарок поставить такую добавку:

Код:
<script>
$(document).on('pun_post pun_edit', function() {setTimeout(function() {setLinkAndAva('.post.new-ajax')}, 0)})
$(document).on('pun_preview', function() {setTimeout(function() {setLinkAndAva('#post-preview')}, 0)})
</script>

Это помогло. Поставил в штмл вверх.Теперь все нормально обновляется в Цитатах. Но подпись необновляется.

Отредактировано Тоха (Вт, 25 Мар 2025 22:05:46)

0

15

Alex_63
Какой нужен скрипт чтобы подпись тоже обновлялась с Живыми темами?

0

16

Тоха написал(а):

Но подпись необновляется.

Судя по скриншоту, там кастомный BB-тег background, реализованный скриптом:

Код:
<!--Фон для текста с любыми параметрами с регулированием ширины и высоты-->
    <script type="text/javascript">
    $('td#button-font').after('<td id="backgr" style=\'background-image:url("https://forumstatic.ru/files/001b/d8/65/72408.png")\' title="Фон для текста картинкой" onclick="tag_background()"></td>');
    $(function(){
    $('.post-content:contains("[background=")').each(function(){
    var htmlbackground = $(this).html().replace(/\[background=(.*?)\,(.*?)\,(.*?)\]([^`]*?)\[\/background\]/gi, "<div style='background:$1;width:$2;height:$3;'>$4</div>");
    $(this).html(htmlbackground)
    });
    });
    function tag_background(){
    var FoundErrorsBACKGROUND = '';
    var backgroundTIT = prompt('Введите параметры фона', 'url("") no-repeat');
    var backgroundTIT2 = prompt('Введите ширину', '100%');
    var backgroundTIT3 = prompt('Введите Высоту', '350px');
    if (FoundErrorsBACKGROUND)
    {alert("Ошибка!" + FoundErrorsBACKGROUND);
    return;}
    bbcode('[background='+backgroundTIT+','+backgroundTIT2+','+backgroundTIT3+']','[/background]');
    }
    </script>
<!-- Окончание -->

Его нужно адаптировать для совместимости с ajax, в идеале реализовывать через MyBBCode и стандартный функционал Пользовательских BB-тегов (в Администрирование - Формы). По идее через MyBBCode у вас уже реализован аналогичный тег postbg, по крайней мере код для него уже стоит у вас на форуме в HTML верх.

+1

17

AGScratcherBest написал(а):

На форумах RusFF почему-то когда появляется новый пост, то реакции у существующих постов дублируются.

Есть такая проблема, чтобы исправить, можно попробовать такую добавку (выделил красным):

<!-- Rusff реакции в realtime постах -->
<script>$(document).on('pun_post', function() { $('.post .reactions-root').remove(); ReactionsPlugin.init() })</script>

Либо использовать Мгновенные уведомления с дополнением для rusff реакций, там этот баг поправлен. У вас они на форуме стоят, но закомментированы.

0

18

Alex_63 написал(а):

Судя по скриншоту, там кастомный BB-тег background, реализованный скриптом:

Код:
<!--Фон для текста с любыми параметрами с регулированием ширины и высоты-->
    <script type="text/javascript">
    $('td#button-font').after('<td id="backgr" style=\'background-image:url("https://forumstatic.ru/files/001b/d8/65/72408.png")\' title="Фон для текста картинкой" onclick="tag_background()"></td>');
    $(function(){
    $('.post-content:contains("[background=")').each(function(){
    var htmlbackground = $(this).html().replace(/\[background=(.*?)\,(.*?)\,(.*?)\]([^`]*?)\[\/background\]/gi, "<div style='background:$1;width:$2;height:$3;'>$4</div>");
    $(this).html(htmlbackground)
    });
    });
    function tag_background(){
    var FoundErrorsBACKGROUND = '';
    var backgroundTIT = prompt('Введите параметры фона', 'url("") no-repeat');
    var backgroundTIT2 = prompt('Введите ширину', '100%');
    var backgroundTIT3 = prompt('Введите Высоту', '350px');
    if (FoundErrorsBACKGROUND)
    {alert("Ошибка!" + FoundErrorsBACKGROUND);
    return;}
    bbcode('[background='+backgroundTIT+','+backgroundTIT2+','+backgroundTIT3+']','[/background]');
    }
    </script>
<!-- Окончание -->

Его нужно адаптировать для совместимости с ajax, в идеале реализовывать через MyBBCode и стандартный функционал Пользовательских BB-тегов (в Администрирование - Формы). По идее через MyBBCode у вас уже реализован аналогичный тег postbg, по крайней мере код для него уже стоит у вас на форуме в HTML верх.

Alex_63 написал(а):

Судя по скриншоту, там кастомный BB-тег background, реализованный скриптом:

Код:
<!--Фон для текста с любыми параметрами с регулированием ширины и высоты-->
    <script type="text/javascript">
    $('td#button-font').after('<td id="backgr" style=\'background-image:url("https://forumstatic.ru/files/001b/d8/65/72408.png")\' title="Фон для текста картинкой" onclick="tag_background()"></td>');
    $(function(){
    $('.post-content:contains("[background=")').each(function(){
    var htmlbackground = $(this).html().replace(/\[background=(.*?)\,(.*?)\,(.*?)\]([^`]*?)\[\/background\]/gi, "<div style='background:$1;width:$2;height:$3;'>$4</div>");
    $(this).html(htmlbackground)
    });
    });
    function tag_background(){
    var FoundErrorsBACKGROUND = '';
    var backgroundTIT = prompt('Введите параметры фона', 'url("") no-repeat');
    var backgroundTIT2 = prompt('Введите ширину', '100%');
    var backgroundTIT3 = prompt('Введите Высоту', '350px');
    if (FoundErrorsBACKGROUND)
    {alert("Ошибка!" + FoundErrorsBACKGROUND);
    return;}
    bbcode('[background='+backgroundTIT+','+backgroundTIT2+','+backgroundTIT3+']','[/background]');
    }
    </script>
<!-- Окончание -->

Его нужно адаптировать для совместимости с ajax, в идеале реализовывать через MyBBCode и стандартный функционал Пользовательских BB-тегов (в Администрирование - Формы). По идее через MyBBCode у вас уже реализован аналогичный тег postbg, по крайней мере код для него уже стоит у вас на форуме в HTML верх.

Если Я правильно понял адаптировать для совместимости с ajax можно вот здесь:

https://forumupload.ru/uploads/0000/14/1c/38651/364702.jpg

Попробовал разные варианты - но все равно Подпись появляется только после обновления. Возможно я что то не так понял...Без Ильи тут походу не разобраться).

Отредактировано Тоха (Ср, 26 Мар 2025 07:43:30)

0

19

Alex_63 написал(а):

Судя по скриншоту, там кастомный BB-тег background, реализованный скриптом:

Код:
<!--Фон для текста с любыми параметрами с регулированием ширины и высоты-->
    <script type="text/javascript">
    $('td#button-font').after('<td id="backgr" style=\'background-image:url("https://forumstatic.ru/files/001b/d8/65/72408.png")\' title="Фон для текста картинкой" onclick="tag_background()"></td>');
    $(function(){
    $('.post-content:contains("[background=")').each(function(){
    var htmlbackground = $(this).html().replace(/\[background=(.*?)\,(.*?)\,(.*?)\]([^`]*?)\[\/background\]/gi, "<div style='background:$1;width:$2;height:$3;'>$4</div>");
    $(this).html(htmlbackground)
    });
    });
    function tag_background(){
    var FoundErrorsBACKGROUND = '';
    var backgroundTIT = prompt('Введите параметры фона', 'url("") no-repeat');
    var backgroundTIT2 = prompt('Введите ширину', '100%');
    var backgroundTIT3 = prompt('Введите Высоту', '350px');
    if (FoundErrorsBACKGROUND)
    {alert("Ошибка!" + FoundErrorsBACKGROUND);
    return;}
    bbcode('[background='+backgroundTIT+','+backgroundTIT2+','+backgroundTIT3+']','[/background]');
    }
    </script>
<!-- Окончание -->

Этот код Шикарен. С ним можно вставлять фото и менять его параметры даже в подписи, и все это экономит тонну времени и не нужно париться в фотошопе). Этот код нужно довести до ума, добавить чтобы Изображение было по Центру(это для небольших фото) и заточить под Утилиту MyBBCode

Отредактировано Тоха (Ср, 26 Мар 2025 08:43:14)

0

20

Тоха написал(а):

Попробовал разные варианты - но все равно Подпись появляется только после обновления. Возможно я что то не так понял...Без Ильи тут походу не разобраться).

Если будет время, возможно перепишу этот скрипт под MyBBCode и совместимость с ajax. Но не обещаю, по крайней мере не быстро, либо на платной основе.

+1


Вы здесь » Единый форум поддержки » Новые возможности форумов » Живые темы: обновление в реальном времени