сайт на данный момент является архивом информации по форуму phpbb 3.0. объяснения и помощь больше не предоставляются. старый сайт

Белк на PhpBB 3.0.14

информация по этому форуму. bbcode, моды и прочее, проверенное Белком. (перенос данных продолжается...)

Сегодня на конференции было 52 посетителей :: 1 зарегистрированный, 0 скрытых, 1 бот и 50 гостей (основано на активности посетителей за последние 24 часа)




 [ 1 сообщение ] 
Автор Сообщение
Не в сети
  (Андрей)
Администратор
Аватара пользователя

Стаж: 5 месяцев 20 дней
Сообщения: 228
Откуда: здешние мы

Стиль сайта: subsilver2
Настоящее имя: Андрей


Popup Layer on New PMs - Новое уведомление о ЛС

Сегодня хотелось бы представить очередной полезный мод для phpbb3, а именно Popup Layer on New PMs/Новое уведомление о ЛС. В чем суть мода ??? Объясню на пальцах - в стандартном функционале phpbb3 уже вшито уведомление пользователей о новом личном сообщении, но оно реализовано посредством всплывающего окна. Чем это плохо? У многих пользователей, заботящихся о интернет-безопасности, в браузере установлено блокирование всех всплывающих окон, сами видели много сайтов с надоедливой рекламой. Так вот, анонсируемый мной мод устроен немного иначе - он осуществляет уведомление не посредством всплывающего окна, а с помощью нового всплывающего слоя. -
от автора темы DeaDRoMeO.

На одном из моих сайтов эта модификация выглядела так:

постер

Если вам это интересно - приступим к установке:

Скачать модификацию из архива сайта

скачать из архива сайта

распаковать и содержимое папки root скопировать в корень сайта (где файл config.php).
после чего приступаем к редактированию файлов форума.

Открыть includes/functions.php

Найти

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

   $l_privmsgs_text = $l_privmsgs_text_unread = '';
   $s_privmsg_new = false;


Вставить после найденного

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

   //Popup Layer on New PMs
   $l_new_message_popup = $pm_popup_click = '';


Найти

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

            $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;


Вставить после найденного

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

            //Popup Layer on New PMs
            $l_new_message_popup = ($user->data['user_new_privmsg'] == 1) ? $user->lang['YOU_NEW_PM'] : $user->lang['YOU_NEW_PMS'];
            $pm_popup_click = sprintf($user->lang['CLICK_VIEW_PRIVMSG'], '<a href="' . append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;folder=inbox') . '">', '</a>');


Найти

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

      'A_COOKIE_SETTINGS'      => addslashes('; path=' . $config['cookie_path'] . ((!$config['cookie_domain'] || $config['cookie_domain'] == 'localhost' || $config['cookie_domain'] == '127.0.0.1') ? '' : '; domain=' . $config['cookie_domain']) . ((!$config['cookie_secure']) ? '' : '; secure')),


Вставить после найденного

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

      //Popup Layer on New PMs
      'PM_POPUP_MESSAGE'         => $l_new_message_popup,
      'PM_POPUP_CLICK_TO_VIEW'   => $pm_popup_click,



для стилей на основе prosilver
Открыть styles/prosilver/template/overall_header.html

Найти и Удалить код

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

   <!-- IF S_USER_PM_POPUP -->
      if ({S_NEW_PM})
      {
         var url = '{UA_POPUP_PM}';
         window.open(url.replace(/&amp;/g, '&'), '_phpbbprivmsg', 'height=225,resizable=yes,scrollbars=yes, width=400');
      }
   <!-- ENDIF -->


Найти

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

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


Вставить после найденного

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
   <script type="text/javascript" src="{T_TEMPLATE_PATH}/opacity.js"></script>
<!-- ENDIF -->


Найти

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

<!-- IF S_CONTENT_DIRECTION eq 'rtl' -->
   <link href="{T_THEME_PATH}/bidi.css" rel="stylesheet" type="text/css" media="screen, projection" />
<!-- ENDIF -->


Вставить после найденного

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
   <!--[if lt IE 7]>
   <link rel="stylesheet" href="{T_THEME_PATH}/ie6-position-fixed.css" type="text/css" media="screen, projection" />
   <![endif]-->
<!-- ENDIF -->


Найти

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

<body id="phpbb" class="section-{SCRIPT_NAME} {S_CONTENT_DIRECTION}">


Вставить после найденного

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
<div id="pm-popup" class="panel">
   <p>{PM_POPUP_MESSAGE}<br /><br />{PM_POPUP_CLICK_TO_VIEW}</p>
   <p class="small"><a href="#" onclick="setOpacity('main-block',1);document.getElementById('pm-popup').style.display='none';return false;">{L_CLOSE_WINDOW}</a></p>
</div>
<!-- ENDIF -->

<div id="main-block">



Открыть styles/prosilver/template/overall_footer.html

Найти



Вставить перед найденным

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

</div>

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
<script type="text/javascript">
setOpacity('main-block', 0.3);
</script>
<!--[if lt IE 7]>
<script type="text/javascript">
var pmPopupDiv = document.getElementById('pm-popup');
function pmPopup()
{
   if (pmPopupDiv.style.display != 'none')
   {
      pmPopupDiv.style.top = (document.documentElement.scrollTop + parseInt(document.documentElement.clientHeight / 2)) + 'px';
   }
}
window.onscroll = pmPopup;
</script>
<![endif]-->
<!-- ENDIF -->




Открыть styles/prosilver/theme/common.css

Найти

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

/* Search box


Вставить перед найденным

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

#pm-popup {
   position: fixed;
   left: 50%;
   top: 50%;
   z-index: 2;
   width: 400px;
   text-align: center;
   margin-left: -200px;
   margin-top: -100px;
   border: 1px solid #d7e0e4;
   padding: 10px;
}

#main-block {
   width: 100%;
   background-color: white;
}



для стилей на основе subsilver2
Открыть styles/subsilver2/template/overall_header.html

Найти

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

<link rel="stylesheet" href="{T_STYLESHEET_LINK}" type="text/css" />


Вставить после найденного

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
   <!--[if lt IE 7]>
   <link rel="stylesheet" href="{T_THEME_PATH}/ie6-position-fixed.css" type="text/css" />
   <![endif]-->
<!-- ENDIF -->


Найти и Удалить код

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

<!-- IF S_USER_PM_POPUP -->
   if ({S_NEW_PM})
   {
      popup('{UA_POPUP_PM}', 400, 225, '_phpbbprivmsg');
   }
<!-- ENDIF -->


Найти

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

<!-- ENDIF -->

// ]]>
</script>


Вставить после найденного

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
   <script type="text/javascript" src="{T_TEMPLATE_PATH}/opacity.js"></script>
<!-- ENDIF -->


Найти

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

<body class="{S_CONTENT_DIRECTION}">


Вставить после найденного

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
<table border="0" cellspacing="0" cellpadding="10" id="pm-popup">
<tr>
   <td>
      <table width="100%" border="0" cellspacing="1" cellpadding="4" class="tablebg">
      <tr class="row1">
         <td valign="top" align="center">
            <br /><span class="gen">
               {PM_POPUP_MESSAGE}<br /><br />{PM_POPUP_CLICK_TO_VIEW}
            </span>
            <br /><br /><span class="genmed"><a href="#" onclick="setOpacity('main-block',1);document.getElementById('pm-popup').style.display='none';return false;">{L_CLOSE_WINDOW}</a></span><br /><br />
         </td>
      </tr>
      </table>
   </td>
</tr>
</table>

<!-- ENDIF -->

<div id="main-block">




Открыть styles/subsilver2/template/overall_footer.html

Найти



Вставить перед найденным

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

</div>

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
<script type="text/javascript">
setOpacity('main-block', 0.3);
</script>
<!-- ENDIF -->



Открыть styles/subsilver2/theme/stylesheet.css

Найти

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

/*  Text


Вставить перед найденным

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

#pm-popup {
   position: fixed;
   top: 50%;
   left: 50%;
   margin-left: -200px;
   margin-top: -100px;
   width: 400px;
   z-index: 2;
   text-align: center;
}

#main-block {
   width: 100%;
   background-color: white;
}


На этом всё. Чистим кэш и радуемся новой доработке.

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

1) Устанавливаем эту опцию для всех зарегистрированных
Скачиваем скрипт, прикрепленный ниже и помещаем его в корень форума:

Вложение:
set_popup.zip [932 байт]
Скачиваний: 4


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

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

http://ваш форум/set_popup.php


после отработки скрипта удаляем его с сервера.

2) Делаем эту опцию активной для новых пользователей
В предыдущем пункте мы активировали опцию Всплывающее окно при получении личного сообщения для уже зарегистрированных пользователей, но ведь у нас еще будут регистрироваться новые пользователи, а у них эта опция будет отключена.
И запускать скрипт опять каждый раз не очень удобно. Поэтому необходимо "включить" эту функцию.
Делается это так:

Открыть includes/functions_user.php

Найти

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

'user_options'      => какое то число,


Число у каждого может быть разным, но это не важно.
Прибавляем к этому числу 1024 и полученной суммой заменяем бывшее число !!!
Для примера, у меня было такое число:

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

'user_options'      => 230271,


После прибавления стало

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

'user_options'      => 231295,


Необходимо провести у вас эту правку так же.


как сделано на этом форуме
у меня уже сильно переделанный стиль и поэтому доработка в стандартом варианте выглядит некрасиво. немного переделал - получилось так:


Вложение:
letter.png
letter.png [ 112.34 КБ | Просмотров: 59 ] letter.png




мой вывод (у меня subsilver2):

я ввёл блок слоя под условие вывода появления сообщения.

Открыть overall_header.html
Найти (показана часть строки)



Вставить после найденного (заменить то, что установили)

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->

<div id="main-block">

<table border="0" cellspacing="0" cellpadding="10" id="pm-popup">
<tr>
   <td>
      <table width="100%" border="0" cellspacing="1" cellpadding="4">
      <tr>
         <td valign="bottom" align="center">
                                <br /><br /><br /><br /><br />
            <br /><span class="gen">
               {PM_POPUP_MESSAGE}<br /><br />{PM_POPUP_CLICK_TO_VIEW}
            </span>
            <br /><br /><span class="genmed"><a href="#" onclick="setOpacity('main-block',1);document.getElementById('pm-popup').style.display='none';return false;">Закрыть письмо</a></span><br /><br />
         </td>
      </tr>
      </table>
   </td>
</tr>
</table>

<!-- ENDIF -->


Открыть overall_footer.html

Найти



Вставить перед найденным

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
</div>
<script type="text/javascript">
setOpacity('main-block', 1,0);
</script>
<!-- ENDIF -->


Открыть theme/stylesheet.css
Добавить в конец файла

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

#pm-popup {
   position: fixed;
   top: 50%;
   left: 50%;
   margin-left: -200px;
   margin-top: -100px;
   width: 400px;
        height: 200px;
   z-index: 5000;
   text-align: center;
        background-image:url('images/letter.jpg');
}

#main-block {
   width: 100%;
}


в процессе применения столкнулся с интересным наблюдением, что браузеры не хотят "подхватывать" новый css-код и вывод не получается. устранил добавлением этого кода прямо в шапку форума. вот так:

открыть overall_header.html

найти

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

<!-- IF S_USER_PM_POPUP and S_NEW_PM -->
   <!--[if lt IE 7]>
   <link rel="stylesheet" href="{T_THEME_PATH}/ie6-position-fixed.css" type="text/css" />
   <![endif]-->
<!-- ENDIF -->


вставить после найденного

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

<style>
#pm-popup {
   position: fixed;
   top: 50%;
   left: 50%;
   margin-left: -200px;
   margin-top: -100px;
   width: 400px;
   height: 200px;
   z-index: 5000;
   text-align: center;
   background-image:url('{T_THEME_PATH}/images/letter.jpg');
}

#main-block {
   width: 100%;
}
</style>


после очистки кэша всё заработало. само собой код для stylesheet.css прописывать не надо.


Загрузить картинку в папку /theme/images/ вашего стиля:

Вложение:
letter.jpg
letter.jpg [ 9.36 КБ | Просмотров: 62 ] letter.jpg






трёхголовый белк семейства рептилоидов:
"три головы - хорошо, на как же трудно придти к согласию..."
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ 1 сообщение ] 

Кто сейчас на конференции:

Всего посетителей: 2, из них зарегистрированных: 0, скрытых: 0 и гостей: 2 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (63) здесь было 23 май 2026, 12:35

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Часовой пояс: UTC + 3 часа



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

cron

Текущее время: 26 июн 2026, 20:53

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB.