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

Белк на PhpBB 3.0.14

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

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




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

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

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


User Rank Progression Bar

мод реализует показ в % времени до следующего звания на форуме, то есть показывает ваш "прогресс"...

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

Вложение:
rank_1.png
rank_1.png [ 91.16 КБ | Просмотров: 33 ] rank_1.png



Вложение:
rank_2.png
rank_2.png [ 54.26 КБ | Просмотров: 33 ] rank_2.png



Вложение:
rank_3.png
rank_3.png [ 128.09 КБ | Просмотров: 33 ] rank_3.png



Если заинтересовало - ставим.

Данный мод не имеет своих файлов и ничего на сервер закачивать не надо.

Правка файлов форума:

общие правки (для любого стиля)
Открыть includes/functions_display.php
Найти

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

* @param string &$rank_img_src the rank image source is stored here after execution


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

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

* @param int &$percent_complete the percentage of the way a user is to the next rank, where -1 means "not applicable"


Найти

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

function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src)


К части кода

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

, &$rank_img_src


Добавить после

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

, &$percent_complete = 0


Найти

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

   if (!empty($user_rank))


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

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

   if (!is_int($percent_complete) || $percent_complete < 0 || $percent_complete > 100)
   {
      $percent_complete = -1;
   }


Найти

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

   else if ($user_posts !== false)
   {


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

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

   $next_rank_post_count = -1;


Найти

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

            if ($user_posts >= $rank['rank_min'])


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

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

            if ($user_posts < $rank['rank_min'])
            {
               $next_rank_post_count = $rank['rank_min'];
            }
            else
 


Найти

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

               $rank_title = $rank['rank_title'];


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

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

               if ($percent_complete == -1 && $next_rank_post_count > -1)
               {
                  $rank_difference = $next_rank_post_count - $rank['rank_min'];
                  $user_progress = $user_posts - $rank['rank_min'];
                  $percent_complete = round(($user_progress / $rank_difference) * 100, 1);
               }
 



Открыть includes/ucp/ucp_pm_viewmessage.php
Найти

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

      'RANK_IMG'         => $user_info['rank_image'],


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

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

      'PERCENTAGE_PROGRESS_NUM'   => $user_info['percentage_progress'],
      'PERCENTAGE_PROGRESS'      => sprintf($user->lang['PERCENTAGE_PROGRESS'], $user_info['percentage_progress']),


Найти

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

get_user_rank($user_row['user_rank'], $user_row['user_posts'], $user_row['rank_title'], $user_row['rank_image'], $user_row['rank_image_src']);


К части строки

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

, $user_row['rank_image_src']


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

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

, $user_row['percentage_progress']



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

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

         get_user_rank($row['user_rank'], (($row['user_id'] == ANONYMOUS) ? false : $row['user_posts']), $rank_title, $rank_img, $rank_img_src);


К части строки

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

$rank_img_src


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

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

, $percentage_progress


Найти

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

   get_user_rank($data['user_rank'], (($user_id == ANONYMOUS) ? false : $data['user_posts']), $rank_title, $rank_img, $rank_img_src);


К части строки

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

$rank_img_src


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

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

, $percentage_progress


Найти

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

      'RANK_IMG_SRC'      => $rank_img_src,


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

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

      'PERCENTAGE_PROGRESS_NUM'   => $percentage_progress,
      'PERCENTAGE_PROGRESS'      => sprintf($user->lang['PERCENTAGE_PROGRESS'], $percentage_progress),



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

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

      if ($poster_id == ANONYMOUS)
      {
         $user_cache[$poster_id] = array(


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

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

            'percentage_progress'      => -1,


Найти

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

get_user_rank($row['user_rank'], false, $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);


К части строки

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

$user_cache[$poster_id]['rank_image_src']


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

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

, $user_cache[$poster_id]['percentage_progress']


Найти

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

         $id_cache[] = $poster_id;

         $user_cache[$poster_id] = array(


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

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

            'percentage_progress'      => -1,


Найти

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

get_user_rank($row['user_rank'], $row['user_posts'], $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);


К части строки

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

$user_cache[$poster_id]['rank_image_src']


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

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

, $user_cache[$poster_id]['percentage_progress']


Найти

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

      'RANK_IMG_SRC'      => $user_cache[$poster_id]['rank_image_src'],


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

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

      'PERCENTAGE_PROGRESS_NUM'   => $user_cache[$poster_id]['percentage_progress'],
      'PERCENTAGE_PROGRESS'      => sprintf($user->lang['PERCENTAGE_PROGRESS'], $user_cache[$poster_id]['percentage_progress']),


EN языковые правки
Открыть language/en/common.php
Найти



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

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

$lang = array_merge($lang, array(
   'PERCENTAGE_PROGRESS' => '%s%%',
   'PROGRESS_TO_NEXT_RANK' => 'Progress to next rank:'
));


RU языковые правки
Открыть language/ru/common.php
Найти



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

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

$lang = array_merge($lang, array(
   'PERCENTAGE_PROGRESS' => '%s%%',
   'PROGRESS_TO_NEXT_RANK' => 'Прогресс до следующего звания:'
));


для стилей на основе prosilver
Открыть styles/prosilver/template/memberlist_body.html
Найти (может быть показана только часть строки)

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

<!-- IF memberrow.RANK_IMG --><span class="rank-img">{memberrow.RANK_IMG}</span><!-- ELSE --><span class="rank-img">{memberrow.RANK_TITLE}</span><!-- ENDIF -->


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

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

<!-- ENDIF -->


Вставить код

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

<!-- IF memberrow.PERCENTAGE_PROGRESS_NUM > -1 --><div class="rank_progress_bar" title="{L_PROGRESS_TO_NEXT_RANK}"><span style="width:{memberrow.PERCENTAGE_PROGRESS_NUM}%" class="bar"></span><span>{memberrow.PERCENTAGE_PROGRESS}</span></div><!-- ENDIF -->



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

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

<!-- IF RANK_IMG --><dd style="text-align: center;">{RANK_IMG}</dd><!-- ENDIF -->


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

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

<!-- IF PERCENTAGE_PROGRESS_NUM > -1 --><dd>{L_PROGRESS_TO_NEXT_RANK}<div class="rank_progress_bar"><span style="width:{PERCENTAGE_PROGRESS_NUM}%" class="bar"></span><span>{PERCENTAGE_PROGRESS}</span></div></dd><!-- ENDIF -->


Найти

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

<!-- IF RANK_IMG --><dt><!-- IF RANK_TITLE -->&nbsp;<!-- ELSE -->{L_RANK}:<!-- ENDIF --></dt> <dd>{RANK_IMG}</dd><!-- ENDIF -->


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

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

<!-- IF PERCENTAGE_PROGRESS_NUM > -1 --><dt>{L_PROGRESS_TO_NEXT_RANK}</dt><dd><div class="rank_progress_bar"><span style="width:{PERCENTAGE_PROGRESS_NUM}%" class="bar"></span><span>{PERCENTAGE_PROGRESS}</span></div></dd><!-- ENDIF -->



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

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

      <!-- IF RANK_IMG --><dd>{RANK_IMG}</dd><!-- ENDIF -->


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

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

      <!-- IF PERCENTAGE_PROGRESS_NUM > -1 --><dd>{L_PROGRESS_TO_NEXT_RANK}<div class="rank_progress_bar"><span style="width:{PERCENTAGE_PROGRESS_NUM}%" class="bar"></span><span>{PERCENTAGE_PROGRESS}</span></div></dd><!-- ENDIF -->



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

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

         <!-- IF postrow.RANK_TITLE or postrow.RANK_IMG --><dd>{postrow.RANK_TITLE}<!-- IF postrow.RANK_TITLE and postrow.RANK_IMG --><br /><!-- ENDIF -->{postrow.RANK_IMG}</dd><!-- ENDIF -->


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

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

         <!-- IF postrow.PERCENTAGE_PROGRESS_NUM > -1 --><dd>{L_PROGRESS_TO_NEXT_RANK}<div class="rank_progress_bar"><span style="width:{postrow.PERCENTAGE_PROGRESS_NUM}%" class="bar"></span><span>{postrow.PERCENTAGE_PROGRESS}</span></div></dd><!-- ENDIF -->



Открыть styles/prosilver/theme/common.css
Найти



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

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

.rank_progress_bar {
   border: 1px solid #b4bac0;
   margin-right: 1em;
   position: relative;
   clear:right
}
.rank_progress_bar span {
   z-index:2;
   position:relative
}
.rank_progress_bar .bar {
   background-color: #fff;
   border-right: 1px solid #b4bac0;
   display:block;
   height: 100%;
   z-index:1;
   position:absolute;
   top: 0;
   left: 0
}


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

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

         <!-- IF RANK_IMG -->
            <tr>
               <td align="center">{RANK_IMG}</td>
            </tr>
         <!-- ENDIF -->


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

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

         <!-- IF PERCENTAGE_PROGRESS_NUM > -1 -->
            <tr>
               <td>{L_PROGRESS_TO_NEXT_RANK}<div class="rank_progress_bar"><span style="width:{PERCENTAGE_PROGRESS_NUM}%" class="bar"></span><span>{PERCENTAGE_PROGRESS}</span></div></td>
            </tr>
         <!-- ENDIF -->



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

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

         <!-- IF postrow.RANK_IMG -->
            <tr>
               <td>{postrow.RANK_IMG}</td>
            </tr>
         <!-- ENDIF -->


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

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

         <!-- IF postrow.PERCENTAGE_PROGRESS_NUM > -1 -->
            <tr>
               <td>{L_PROGRESS_TO_NEXT_RANK}<div class="rank_progress_bar"><span style="width:{postrow.PERCENTAGE_PROGRESS_NUM}%" class="bar"></span><span>{postrow.PERCENTAGE_PROGRESS}</span></div></td>
            </tr>
         <!-- ENDIF -->



Открыть styles/subsilver2/theme/stylesheet.css
Найти

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

/* Misc
 ------------ */


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

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

.rank_progress_bar {
   border: 1px solid #A9B8C2;
   margin-right: 1em;
   position: relative;
   clear:right
}
.rank_progress_bar span {
   z-index:2;
   position:relative
}
.rank_progress_bar .bar {
   background-color: #fff;
   border-right: 1px solid #A9B8C2;
   display:block;
   height: 100%;
   z-index:1;
   position:absolute;
   top: 0;
   left: 0
}


На этом всё. Почистите кэш и наслаждайтесь работой мода.

не забудьте в админке для пользователей создать систему званий/рангов - а то, иначе, что будет выводить мод?




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

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

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

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

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



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

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

cron

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

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