info navigation

phpbb-belk.ru

темы, связанные с форумом phpbb 3.0.x



Новая тема  [ 1 сообщение ]  Просмотры: 3450

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

Стаж: 8 лет 6 месяцев 6 дней
Сообщения: 1223
Откуда: здешние мы


Стиль: subsilver2


Репутация: 11


Russia

Тиц и PR

перейти на сайт пользователя
Найти темы пользователя


Расширение функций Who is online (отдельная страница)

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

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

находится по адресу

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

ваш форум/viewonline.php


как это выглядит на этом сайте (с доработками):

Вложение:
viewonline.png
viewonline.png [ 31.61 КБ | Просмотров: 3398 ] viewonline.png



данная тема создана для публикации доработок, увеличивающих информативность страницы. обсуждение и решение проблем отдельных доработок будет вынесено в отдельные темы в форуме "Вопросы и Ответы".

Topic in Who is online - тема просмотра
Хак выводит название темы в форуме, которую сейчас просматривает конкретный пользователь. для лучшего понимания сравните сканы до установки модификации и после.

Вложение:
Комментарий к файлу: вывод места до установки модификации
topic_on_1.png
topic_on_1.png [ 8.38 КБ | Просмотров: 3446 ] topic_on_1.png



Вложение:
Комментарий к файлу: вывод места после установки модификации
topic_on_2.png
topic_on_2.png [ 10.23 КБ | Просмотров: 3446 ] topic_on_2.png



я потестировал - работает. но на данную модификацию есть нарекания, поэтому в папке мода оставлено предупреждение

Цитата:
This MOD is development quality. It is not recommended that you install it on a live forum.


то есть модификация имеет проблемы и не рекомендуется устанавливать её на рабочий форум. добавлена правка кода от -Волк-.

я ещё "погоняю - посмотрю что и как. если у меня вылезут проблемы - напишу. обсуждение этой модификации здесь: https://phpbb-belk.ru/topic-in-who-is-online_t359.html

если вы решите её использовать - ставится она так:

Открыть viewonline.php
Найти

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

$location = sprintf($user->lang['READING_TOPIC'], $forum_data[$forum_id]['forum_name']);


после кода в этой строке

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

$forum_data[$forum_id]['forum_name']


вставить код

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

, $topic_data['topic_title']


Найти (может быть показана часть строки)

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

$location = sprintf($user->lang['READING_TOPIC'], $forum_data[$forum_id]['forum_name']);


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

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

                  preg_match('|t=([0-9]+)|', $row['session_page'], $on_page);
                  preg_match('|p=([0-9]+)|', $row['session_page'], $on_page_post);
                  if (!empty($on_page_post[1]))
                  {
                     $sql = 'SELECT topic_title FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE ." p WHERE t.topic_id = p.topic_id AND p.post_id = {$on_page_post[1]}";
                  }
                  if (!empty($on_page[1]))
                  {
                     $sql = 'SELECT topic_title FROM ' . TOPICS_TABLE . " WHERE topic_id = {$on_page[1]}";
                  }
                  $topic_result = $db->sql_query($sql);
                  $topic_data = $db->sql_fetchrow($topic_result);


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

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

$location_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $forum_id . ((!empty($on_page[1])) ? '&t=' . $on_page[1] : '&p=' . $on_page_post[1]));


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

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

               case 'viewtopic':
                  preg_match('|t=([0-9]+)|', $row['session_page'], $on_page);
                  preg_match('|p=([0-9]+)|', $row['session_page'], $on_page_post);
                  if (!empty($on_page_post[1]))
                  {
                     $sql = 'SELECT topic_title FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE ." p WHERE t.topic_id = p.topic_id AND p.post_id = {$on_page_post[1]}";
                  }
                  if (!empty($on_page[1]))
                  {
                     $sql = 'SELECT topic_title FROM ' . TOPICS_TABLE . " WHERE topic_id = {$on_page[1]}";
                  }
                  $topic_result = $db->sql_query($sql);
                  $topic_data = $db->sql_fetchrow($topic_result);
                  $location = sprintf($user->lang['READING_TOPIC'], $forum_data[$forum_id]['forum_name'], $topic_data['topic_title']);
                  $location_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $forum_id . ((!empty($on_page[1])) ? '&t=' . $on_page[1] : '&p=' . $on_page_post[1]));
               break;


Теперь надо сделать правки для вывода в языковых файлах:

Открыть language/en/common.php
Найти

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

'READING_TOPIC'            => 'Reading topic in %s',


Заменить найденное на

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

'READING_TOPIC'            => 'Reading topic «%2$s» in %1$s',


Открыть language/ru/common.php
Найти

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

'READING_TOPIC'            => 'Просмотр темы в форуме «%s»',


Заменить найденное на

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

'READING_TOPIC'            => 'Просмотр темы «%2$s» в форуме «%1$s»',


официальная страница мода: http://bb3x.ru/mods/info/24


Avatar in Who is Online - аватар пользователя
эта доработка добавляет аватар пользователя в список пользователей онлайн.
вот так:

Вложение:
Комментарий к файлу: аватар в сабсилвере
avatar_new.png
avatar_new.png [ 11.01 КБ | Просмотров: 3439 ] avatar_new.png



обсуждение проблем доработки здесь: https://phpbb-belk.ru/avatar-in-who-is-online_t362.html

если понравилось - ставим:

Открыть viewonline.php
Найти

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

include($phpbb_root_path . 'common.' . $phpEx);


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

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

include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

Найти (показана часть строки)

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

// Get user list
$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour,


После кода

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

 u.user_colour,


Вставить

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

 u.user_avatar, u.user_avatar_type, u.user_avatar_width, u.user_avatar_height,

Найти

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

   $template->assign_block_vars('user_row', array(


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

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

   $avatar_max_dimensions = $avatar_width = $avatar_height   = '';
   if ( !empty($row['user_avatar']) )
   {
      $avatar_max_dimensions = 40; // here you can change the max-width you would like to have the avatars displayed, change to 0 to use default
   
      if ( $avatar_max_dimensions )
      {   
         if ( $row['user_avatar_width'] >= $row['user_avatar_height'] )
         {
            $avatar_width = ( $row['user_avatar_width'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['user_avatar_width'] ;
            $avatar_height = ( $avatar_width == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['user_avatar_width'] * $row['user_avatar_height']) : $row['user_avatar_height'] ;
         }
         else
         {
            $avatar_height = ( $row['user_avatar_height'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['user_avatar_height'] ;
            $avatar_width = ( $avatar_height == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['user_avatar_height'] * $row['user_avatar_width']) : $row['user_avatar_width'] ;
         }
      }
      else
      {
         $avatar_height    = $row['user_avatar_height'];
         $avatar_width    = $row['user_avatar_width'];
      }
   }

Найти

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

      'USERNAME'          => $row['username'],


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

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

      'ONLINE_AVATAR'    => ( $row['user_avatar'] ) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $avatar_width, $avatar_height) : '',


правки для стиля prosilver:

Открыть styles/prosilver/template/viewonline_body.html
Найти

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

         <th class="name"><a href="{U_SORT_USERNAME}">{L_USERNAME}</a></th>


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

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

         <th>&nbsp;</th>

Найти

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

         <td>{user_row.USERNAME_FULL}<!-- IF user_row.USER_IP --> <span style="margin-left: 30px;">{L_IP}:


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

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

         <td style="width:20px;"><!-- IF user_row.ONLINE_AVATAR -->{user_row.ONLINE_AVATAR}<!-- ENDIF --></td>

Найти

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

      <tbody>
      <tr class="bg1">
         <td colspan="3">{L_NO_ONLINE_USERS}<!-- IF S_SWITCH_GUEST_DISPLAY --> &bull; <a href="{U_SWITCH_GUEST_DISPLAY}">{L_SWITCH_GUEST_DISPLAY}</a><!-- ENDIF --></td>         


в строке

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

colspan="3"


заменить 3 на 4.


правки для стиля subsilver2:

Открыть styles/subsilver2/template/viewonline_body.html
Найти

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

   <th width="40%"><a href="{U_SORT_USERNAME}">{L_USERNAME}</a></th>


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

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

   <th>&nbsp;</th>

Найти

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

      <td class="row1"><p class="gen">{user_row.USERNAME_FULL}</p><!-- IF user_row.USER_IP --><p class="gensmall">{L_IP}:


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

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

      <td class="row1"><!-- IF user_row.ONLINE_AVATAR -->{user_row.ONLINE_AVATAR}<!-- ENDIF --></td>

Найти

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

      <td class="row1" colspan="3"><b class="gensmall">{L_LEGEND} :: {LEGEND}</b></td>


в строке

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

colspan="3"


заменить 3 на 4.


После правок очистить кэш и можно пользоваться. :-D


National Flags in Who is online - флаг страны пользователя
это "усовершенствование" выводит маркировку страны пользователя в списке (флаг/текстовое название, в зависимости от настроек мода флага в админке). разумеется, у вас должна быть установлена сама модификация флага.

обсуждение доработки здесь: https://phpbb-belk.ru/national-flags-in-who-is-online_t363.html

выглядеть будет примерно так:

Вложение:
Комментарий к файлу: вывод флага на этом сайте
flag_online.png
flag_online.png [ 16.79 КБ | Просмотров: 3431 ] flag_online.png



если понравилось - давайте поставим:

Открыть viewonline.php
Найти

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

include($phpbb_root_path . 'common.' . $phpEx);


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

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

include($phpbb_root_path . 'includes/functions_flag.' . $phpEx);


Найти

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

// Get user list
$sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_type, u.user_colour,


после части строки

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

 u.user_colour,


Вставить

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

 u.user_flag,


Найти

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

$result = $db->sql_query($sql);


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

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

$flag_count = 0;


Найти

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

   $template->assign_block_vars('user_row', array(


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

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

         //Begin: National_Flag
         if ( !empty($row['user_flag']) )
         {
            $user_flag = get_user_flag($row['user_flag']);
            ++$flag_count;
         }
         else
         {
            $user_flag = '';
         }         
         //End: National_Flag


Найти

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

      'USERNAME'          => $row['username'],


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

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

            'ONLINE_USER_FLAG'         => ( $row['user_flag'] ) ? get_user_flag($row['user_flag']) : '',


Вывод флага в шаблоне viewonline_body.html можно сделать по аналогии
с выводом аватара в предыдущем посте о встраивании аватара, либо поставить как вам удобно.

код вывода:

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

<!-- IF user_row.ONLINE_USER_FLAG -->{user_row.ONLINE_USER_FLAG}<!-- ENDIF -->


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

Кто сейчас на сайте:

Всего посетителей: 0, из них зарегистрированных: 0, скрытых: 0 и гостей: 0 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (122) здесь было 19 дек 2023, 12:10

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

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



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

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




cron

Текущее время: 28 мар 2024, 11:35

Создано на основе phpBB® Forum Software © phpBB Group
Яндекс.Метрика

Полная версия Мобильный вид