Ajax base phpbb3(автоматическое обновление элементов форума)

В данном подфоруме будут располагаться темы с анонсами интересных модификаций, а так же будут рассматриваться проверенные временем дополнения для phpBB3.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----

Был ли полезен для вас данный анонс ???

Можно выбрать до 1 варианта ответа

 
 
Результаты голосования

Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение DeaDRoMeO »

Всем доброго времени суток. Сегодня вашему вниманию представляю достаточно хорошу модификацию для наших форумов, а именно - Ajax base.
Внимание !!! Инструкция есть только для стилей на основе Просильвера. НО при наличии хотябы минимальных познаний в HTML вы легко поставите данный мод и на Сабсильвер2.
Для чего же она вообщем создана ??? Создана она для автоматического обновления некоторого содержимого форума без перезагрузки страницы, технология аякс вообщем то. Что на данный момент она может:

1. Каждые 15 секунд обновляется Кто онлайн
2. Каждые 15 секунд обновляется статистика форума (кол-во сообщений, пользователей и тд)
3. Предпросмотр сообщения без перезагрузки страницы

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

Запросов к БД и русификации по инструкции нет, всего несколько правок и мод установлен.

---------------- Дополнение: AJAX-обновление и проверка наличия новых ЛС --------------

Маленькое дополнение для представленной выше модификации, добавит проверку наличия новых ЛС без перезагрузки страницы. Открываем /styles/ваш стиль/template/index_body.html и находим

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

setTimeout("reload('ctime', 1000)", 1000);
Добавляем после найденного

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

setTimeout("reload('priv', 15000)", 15000);
Открываем /styles/ваш стиль/template/overall_header.html и находим

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

<!-- IF S_DISPLAY_PM --> (<a href="{U_PRIVATEMSGS}">{PRIVATE_MESSAGE_INFO}</a>)<!-- ENDIF -->
Заменяем найденное на

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

<!-- IF S_DISPLAY_PM --> (<a href="{U_PRIVATEMSGS}"><span id="priv_span">{PRIVATE_MESSAGE_INFO}</span></a>)<!-- ENDIF -->
Открываем /ajax_base.php и находим

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

echo sprintf($user->lang['CURRENT_TIME'], $user->format_date(time(), false, true));
}
Добавляем после найденного

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

else if( $mode == 'priv' )
{
$l_privmsgs_text = $l_privmsgs_text_unread = '';
$s_privmsg_new = false;
   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']);

         if (!$user->data['user_last_privmsg'] || $user->data['user_last_privmsg'] > $user->data['session_last_visit']){
            $sql = 'UPDATE ' . USERS_TABLE . '
               SET user_last_privmsg = ' . $user->data['session_last_visit'] . '
               WHERE user_id = ' . $user->data['user_id'];
            $db->sql_query($sql);

            $s_privmsg_new = true;
         } else {
            $s_privmsg_new = false;
         }
      } else {
         $l_privmsgs_text = $user->lang['NO_NEW_PM'];
         $s_privmsg_new = false;
      }

      $l_privmsgs_text_unread = '';

      if ($user->data['user_unread_privmsg'] && $user->data['user_unread_privmsg'] != $user->data['user_new_privmsg']){
         $l_message_unread = ($user->data['user_unread_privmsg'] == 1) ? $user->lang['UNREAD_PM'] : $user->lang['UNREAD_PMS'];
         $l_privmsgs_text_unread = sprintf($l_message_unread, $user->data['user_unread_privmsg']);
      }
   }
echo $l_privmsgs_text;
}
Чистим кеши и готово. Успехов :-ok-:
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#1
Tipocheg
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 187
Стаж: 10 лет 8 месяцев
Откуда: Харьков
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение Tipocheg »

А не будет ли данный мод подгружать БД?
#2
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение DeaDRoMeO »

Не должен, он работает лишь тогда, когда конкретный пользователь сидит на главной странице
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#3
Аватара пользователя
Олег В
Активно общаюсь
Активно общаюсь
Сообщения: 340
Стаж: 11 лет
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение Олег В »

Толи я туплю, толи в установочном файле нет куска кода.
А именно: Для файла /styles/ваш стиль/template/index_body.html нет куска который есть в деинсталяционном варианте.
#4
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение DeaDRoMeO »

Хммм, вы смотрите инструкцию из папки contrib ??? Там же инструкция по обновлению версии мода, разраб видимо оптимизировал код и этот кусок не нужен теперь в новой версии
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#5
Аватара пользователя
Олег В
Активно общаюсь
Активно общаюсь
Сообщения: 340
Стаж: 11 лет
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение Олег В »

Нет. Я смотрю инструкцию в папке ajax_base_2_0_0. ПРочитав Ваше дополнение к моду, начал искать кусок кода

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

setTimeout("reload('ctime', 1000)", 1000);
, а его и нету. Вот я и запаниковал. Полез в папку contrib и там в файле деинсталяции эти строки указаны как удаляемые.
DeaDRoMeO писал(а):разраб видимо оптимизировал код и этот кусок не нужен теперь в новой версии
Так а ваше дополнение к файлам /styles/ваш стиль/template/overall_header.html и /ajax_base.php нужно делать в новой версии?? И как можно задать другое время?? Как по мне 15 сек. наверное слишком мало. Хотя бы 30сек. выставить чтоб БД не грузить.
Спасибо!
#6
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение DeaDRoMeO »

В папке шаблонов есть такая вещь как ajax_base.js, там есть кусок кода

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

if(ajax_base_script == 'index'){
		/*
		 * who is online
		 */
		$('#who_is_online_wrapper').unrepeat().repeat(15000).load(ajax_base_url, {mode: 'who_is_online'});

		/*
		 * statistics
		 */
		$('#statistics_wrapper').unrepeat().repeat(15000).load(ajax_base_url, {mode: 'statistics'});
	}
});
В нем

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

repeat(15000)
Означает повторение через каждые 15 секунд (или 15 000 миллисекунд), меняете на свое, в вашем случае 30000
А насчет дополнения - погляжу завтра, тут надо переписывать все под новую версию
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#7
Аватара пользователя
Олег В
Активно общаюсь
Активно общаюсь
Сообщения: 340
Стаж: 11 лет
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение Олег В »

Поставил. Подогнал под свой стиль на основе сабсильвера. Всё работает, только вот пришлось в файле overall_header.html помудрить. Если нужную строку <!-- INCLUDE ajax_base.html --> вставить перед </head> , у меня пропадает возможность предварительного просмотра написанных сообщений а если вставить её чуть выше, не работает авто обновление. Я её тыкал-мыкал и вроде как попал. Вставил между двух <!-- ENDIF --> и всё заработало! Опять у меня появилось сомнение в правильности своих действий. Боюсь что что то перестало работать а сразу всё и не проверишь. Сергей! Не могли бы вы глянуть. Хорошее место я выбрал для этой строки <!-- INCLUDE ajax_base.html -->, или есть более подходящее для неё место? Спасибо.
файл overall_header.html Стиль Getaway (сабсильвер2)

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

</script>
<script type="text/javascript" src="{T_TEMPLATE_PATH}/ca_scripts.js"></script>
<!-- Breizh Shoutbox Start -->
<!-- IF S_DISPLAY_SHOUTBOX -->
<link rel="stylesheet" href="{T_THEME_PATH}/shout_sub.css" type="text/css" />
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/editor.js"></script>
<script type="text/javascript" src="{T_SUPER_TEMPLATE_PATH}/shoutbox.js"></script>
<script type="text/javascript" src="{U_SHOUT}"></script>
<!-- IF U_CHARS -->
<script type="text/javascript" src="{U_CHARS}"></script>
<!-- ENDIF -->
<!-- INCLUDE ajax_base.html -->     --------  Вот куда я его воткнул! :))
<!-- ENDIF -->
<!-- Breizh Shoutbox End -->

 <script type="text/javascript" src="{T_TEMPLATE_PATH}/tooltip.js"></script>

<!-- INCLUDE gallery/plugins_header.html -->
<link rel="stylesheet" href="{PPKBB3CKER_ADDONS}css/spoiler.css" type="text/css" media="screen" />
<script src="{PPKBB3CKER_ADDONS}js/jquery-min.js" type="text/javascript"></script>
<script src="{PPKBB3CKER_ADDONS}js/spoiler.js" type="text/javascript"></script>
<script type="text/javascript" src="scrolltopcontrol.js"></script>
<script type="text/javascript" src="{T_TEMPLATE_PATH}/crawl.js">
// Image Crawler Script (c)2009 John Davenport Scheuer
// This Notice Must Remain for Legal Use
</script>
<link href="{T_THEME_PATH}/last_x_img_style.css" rel="stylesheet" type="text/css" />
<!-- IF SITE_BG_IMG -->
<style type="text/css">
<!--
#logorow {background:url("{SITE_BG_IMG}") repeat;}
-->
</style>
<!-- ENDIF -->
</head>
#8
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение DeaDRoMeO »

Вставьте его после

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

<!-- Breizh Shoutbox End -->
Потому как вы его запихнули внутрь кода от чата
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#9
Аватара пользователя
Олег В
Активно общаюсь
Активно общаюсь
Сообщения: 340
Стаж: 11 лет
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение Олег В »

Тогда опять не работает пред просмотр сообщений. :nez-nayu:
#10
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов фор

Сообщение DeaDRoMeO »

Странно однако, может идет конфликт скриптов какой то, тогда оставляйте кусок там где все работает
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#11
Аватара пользователя
Олег В
Активно общаюсь
Активно общаюсь
Сообщения: 340
Стаж: 11 лет
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение Олег В »

Хорошо! Жду тогда обещанной Вами доработки. :co_ol:
#12
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение Lorem Ipsum »

А можно применить это к опросам на главной? Допустим, там есть пагинация опросов, при клике на следующий перегружается вся страница, а хотелось бы, чтобы только этот фрагмент. Или в таких случаях что-то другое используют?
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#13
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение DeaDRoMeO »

Хмм погорячился я насчет простоты добавления для других элементов, там почти все файлы мода нуждаются в редактировании, впринципе погляди как все прописывается и по аналогии сделай, пока нету времени этим заняться((
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#14
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение Lorem Ipsum »

Мне нравится, как здесь http://webadequate.ru/. Какой бы линк из меню не нажал, обновляется только div content, а sidebar остаётся на месте.
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#15
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение DeaDRoMeO »

Чиво чиво ? Кликаю по линкам - обновляется вся страница
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#16
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение Lorem Ipsum »

На линки меню кликал или статей?
При клике на менюшку перегружается только определённый фрагмент, а не вся страница. Или я слепая?
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#17
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение DeaDRoMeO »

У меня всегда страница перезагружается, по чему бы я не кликал
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#18
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение Lorem Ipsum »

Странно. У меня толкьо, если жму на линки статей. В принципе, можно у тамошнего владельца спросить, мне понравилась эта вещь, красиво и современно.
Хотя, может, я и ошибаюсь, и это реализовано через файлы blablabla.inc.php, где .inc.php выполняет задачу только для определённого элемента.
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#19
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Ajax base phpbb3(автоматическое обновление элементов форума)

Сообщение DeaDRoMeO »

Lorem Ipsum, уххх в таком я еще не разбирался даже))
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#20
Ответить