Динамическое "Новое ЛС" (AJAX new PM)

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Динамическое "Новое ЛС" (AJAX new PM)

Сообщение evrus01 »

Если коротко, то необходимо, чтобы информация о новом ЛС приходила без перезагрузки страницы.

Поиск дал следующее:

http://www.phpbb.com/community/viewtopi ... &t=2094406

Работающий вариант на основе мода Ajax base

Но вот незадача — мод Ajax Base требует jQuery (а у меня в шаблоне mootools).
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Nekstati »

Создать в корневой папке форума файл pm.php следующего содержания:

Код: Выделить всё

<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

$user->session_begin();
$user->setup();

if (!empty($user->data['is_registered']))
{
	if ($user->data['user_new_privmsg'])
	{
		$l_message_new = ($user->data['user_new_privmsg'] == 1) ? $user->lang['NEW_PM'] : $user->lang['NEW_PMS'];
		$l_privmsgs_text = sprintf($l_message_new, $user->data['user_new_privmsg']);
	}
	else
	{
		$l_privmsgs_text = $user->lang['NO_NEW_PM'];
	}

	echo $l_privmsgs_text;
}

garbage_collection();
exit_handler();

?>
Найти в overall_header.html

Код: Выделить всё

<!-- IF S_DISPLAY_PM --> (<a href="{U_PRIVATEMSGS}">{PRIVATE_MESSAGE_INFO}</a>)<!-- ENDIF -->
заменить на (jQuery)

Код: Выделить всё

<!-- IF S_DISPLAY_PM -->
	(<a href="{U_PRIVATEMSGS}" id="pm-link">{PRIVATE_MESSAGE_INFO}</a>)
	<script type="text/javascript">
		setInterval(function() {
			$("#pm-link").load('{ROOT_PATH}pm.php');
		}, 60000);
	</script>
<!-- ENDIF -->
или на (MooTools 1.1)

Код: Выделить всё

<!-- IF S_DISPLAY_PM -->
	(<a href="{U_PRIVATEMSGS}" id="pm-link">{PRIVATE_MESSAGE_INFO}</a>)
	<script type="text/javascript">
		var pmReq = new Ajax('{ROOT_PATH}pm.php', {update: $('pm-link')});
		setInterval(function() {pmReq.request()}, 60000);
	</script>
<!-- ENDIF -->
Аватара пользователя
TyMaH
phpBB 2.0.3
Сообщения: 389
Стаж: 15 лет 3 месяца
Благодарил (а): 182 раза
Поблагодарили: 18 раз

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение TyMaH »

Это будет работать без установленного мода Ajax Base?
Изображение
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Nekstati »

Да.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Татьяна5 »

Вместо того, чтобы измениться, строка (новых ЛС: 0) исчезает. При перезагрузке страницы появляется.

Из модов, затрагивающих ЛС, стоят:
Всплывающее сообщение при новых ЛС [Highslide]
Welcome PM on First Login 2.2.5

Возможно, с ними конфликт?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Nekstati »

Вряд ли. Может, скрипт pm.php выдаёт пустую строку. Заочно не узнать.
Аватара пользователя
TyMaH
phpBB 2.0.3
Сообщения: 389
Стаж: 15 лет 3 месяца
Благодарил (а): 182 раза
Поблагодарили: 18 раз

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение TyMaH »

Кстати насчет исчезает.. а как сделать чтоб небыло видно (Новых ЛС: 0) пока нет лс?
Изображение
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Nekstati »

overall_header.html

Код: Выделить всё

<!-- IF S_DISPLAY_PM -->
заменить на

Код: Выделить всё

<!-- IF S_DISPLAY_PM and S_USER_NEW_PRIVMSG -->
Аватара пользователя
TyMaH
phpBB 2.0.3
Сообщения: 389
Стаж: 15 лет 3 месяца
Благодарил (а): 182 раза
Поблагодарили: 18 раз

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение TyMaH »

При получении лс, без перезагрузки не появляется (Новых ЛС: 1)
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Татьяна5 »

Nekstati писал(а):Вряд ли.
Точно не с модами. На основном форуме работает.
А возможно ли сделать, чтобы и всплывающее сообщение [Highslide] появлялось без перезагрузки?

И есть код, закрытый условиями вроде <!-- IF S_USER_NEW_PRIVMSG --> (мигающее письмо). Что надо сделать, чтобы эти условия тоже срабатывали? Просто подстановка id не помогла.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1454 раза

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Nekstati »

Можно, но придётся делать всё совсем по-другому. М. б., сделаю мод, ЕБВ.

Ничего нельзя сделать, т. к. код, заключённый в это условие, отсутствует на странице при отсутствии новых ЛС.
Аватара пользователя
Krabsss
phpBB 1.4.4
Сообщения: 174
Стаж: 14 лет 1 месяц
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Krabsss »

сделал я как написала Некстати, но все равно всплывает ЛС в новом окне браузера, как обычно
нужно ли еще устанавливать jQuery?
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение evrus01 »

Krabsss, у вас должна быть еще установлена модификация, которая вместо браузерного окна выводит уведомление слоем.

Добавлено спустя 3 минуты 40 секунд:
Вот Popup Layer on New PMs / Всплывающий слой при новых ЛС

Или можете поставить модификацию от Garret Dark'a — PM All in One — кажется так называется. Там тоже используется всплывающий слой вместо окна.
Аватара пользователя
Krabsss
phpBB 1.4.4
Сообщения: 174
Стаж: 14 лет 1 месяц
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение Krabsss »

вот этот мод стоял Popup Layer on New PMs / Всплывающий слой при новых ЛС и тоже не работало
окно всплывало, но после перезагрузки страницы, и там не видны дополнительные сведения как у вас здесь важные ЛС
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Re: Динамическое "Новое ЛС" (AJAX new PM)

Сообщение evrus01 »

Дополнительные сведения это как раз доработка Garret_Dark'a (по крайней мере была взята за основу).

Попробуйте поставить ее для начала.

Добавлено спустя 41 секунду:
[RC] PM All in 1 - ЛС "Все включено"

Вернуться в «Запросы модов для phpBB 3.0.x»