• 175 First Post On Every Page - дублеж первого поста • 
Первым на всех страницах данной темы
При создании темы о модах для двигателя форумов phpBB ветки до версии 3.0.14 название темы должно начинаться с названия мода на английском, без указания версии, затем тире, затем короткое название мода на русском с маленькой буквы. Создание тем не о модах в данном подфоруме запрещено. Посторонние темы о двиге и посторонних проблемах для ветки до версии 3.0.14 в соседнем подфоруме.

    175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 07:57

ДУБЛЕЖ 1-го СООБЩЕНИЯ First Post On Every Page
ЭТОТ МОД делает самое первое сообщения во всех темах, первым на всех страницах данной темы, не зависимо от количества страниц в этой теме. Это сделано для того, что бы просматривая другие страницы всей темы, не забывалось то , о чем создана данная тема. Этим самых предотвращается посторонний флуд в темах.
Последняя версия 1.2.3

Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 07:58

При создании новых тем рекомендуется делать первое сообщение коротким, вступительным...

Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 08:00

От автора rxu -
После установки мода необходимо выполнить также следующую инструкцию (для снижения нагрузки на базу данных):
Open:
viewtopic.php
Find:
Код: выделить все
$post_list[$i] = $topic_data['topic_first_post_id'] ;

Replace to:
Код: выделить все
$post_list[$i] = (int) $topic_data['topic_first_post_id'] ;

Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 08:02

От автора rxu -
Исправление ошибки с отображением информации о редактировании сообщения при закрепленном первом сообщении.
OPEN
viewtopic.php
FIND
Код: выделить все
// First post on every page
// Show first post on every page if needed
if($topic_data['topic_first_post_show'] && ( $start != 0))
{
   $i = 0;
   $post_list[$i] = $topic_data['topic_first_post_id'] ;
   $i = ($store_reverse) ? $sql_limit : $i+1;
}

REPLACE WITH
Код: выделить все
// First post on every page
// Show first post on every page if needed
// For the case the user is trying to reach the first half of the topic
if ($topic_data['topic_first_post_show'] && ($start != 0))
{
   if (!$store_reverse)
   {
      $post_list[$i] = $topic_data['topic_first_post_id'];
   }
   $i++;
}

FIND
Код: выделить все
while ($row = $db->sql_fetchrow($result))
{
   $post_list[$i] = $row['post_id'];
   ($store_reverse) ? $i-- : $i++;
}
$db->sql_freeresult($result);

AFTER, ADD
Код: выделить все
// First post on every page
// Show first post on every page if needed
// For the case the user is trying to reach the second half of the topic
if ($topic_data['topic_first_post_show'] && ($start != 0) && $store_reverse)
{
   $post_list[$i] = $topic_data['topic_first_post_id'];
}

Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 08:06

От автора rxu -
Как сделать чтобы по умолчанию закреплялся первый пост всегда?
Открыть: posting.php
Найти:
Код: выделить все
$post_data['topic_first_post_show'] = (isset($post_data['topic_first_post_show'])) ? $post_data['topic_first_post_show'] : 0;

Заменить кодом:
Код: выделить все
$post_data['topic_first_post_show'] = (isset($post_data['topic_first_post_show'])) ? $post_data['topic_first_post_show'] : 1;

Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 08:15

От автора с61 -
Что на мой взгляд не хватает в этом моде, так это пометки первого поста: "закреплён", чтобы пользователь легко мог это видеть. Или я плохо искал в этой теме?))
Предлагаются следующие дополнения (ниже - пример для стиля Artodia Deluxe,чтобы был понятен принцип):
В viewtopic.php найти:
Код: выделить все
      'S_TOPIC_POSTER'   => ($topic_data['topic_poster'] == $poster_id) ? true : false,

добавить после:
Код: выделить все
      'S_STICKY_POST'      => ($topic_data['topic_first_post_show'] && ($topic_data['topic_first_post_id'] == $row['post_id'])) ? true : false,

В viewtopic_body.html (пример - стиль Artodia Deluxe) найти:
Код: выделить все
         <h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3>

заменить на:
Код: выделить все
         <h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.S_STICKY_POST --><img src="images/sticky_gray.gif" alt="" />&nbsp;&nbsp;<!-- ENDIF --><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3>

затем найти:
Код: выделить все
      <div class="back2top"><a href="#page-body" class="top" title="{L_BACK_TO_TOP}">{L_BACK_TO_TOP}</a></div>

и заменить на:
Код: выделить все
   <!-- IF postrow.S_STICKY_POST -->
      <div style="clear:both;"><img src="images/sticky_gray.gif" alt="" align="left"/><img src="images/sticky_gray.gif" alt="" align="right" /></div>
   <!-- ELSE -->
      <div class="back2top"><a href="#page-body" class="top" title="{L_BACK_TO_TOP}">{L_BACK_TO_TOP}</a></div>
   <!-- ENDIF -->

Залить прилагаемый файл sticky_gray.gif в/images
 
175 First Post On Every Page - дублеж первого поста - sticky_gray


Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 08:28

Еще варианты отделения первого поста от остальных -
Вариант 1 -
Открыть:
viewtopic_body.html
Найти:
Код: выделить все
<!-- END postrow -->

Добавить перед:
Код: выделить все
<!-- IF postrow.S_FIRST_ROW -->
   <div class="post bg2">
      <div class="inner" style="text-align: center;"><span class="corners-top"><span></span></span>
      <span class="corners-bottom"><span></span></span></div>
   </div>
<hr class="divider" />
<!-- ENDIF -->

Вариант 2 -
Открыть:
viewtopic.php
Найти:
Код: выделить все
  'U_TOPIC'            => "{$server_path}viewtopic.$phpEx?f=$forum_id&amp;t=$topic_id",

Добавить после:
Код: выделить все
 'S_TOPIC_FIRST_POST_SHOW'   => ($topic_data['topic_first_post_show'] == 1) ? true : false,

Открыть:
styles/prosilver/template/viewtopic_body.html
Найти:
Код: выделить все
 <div id="p{postrow.POST_ID}" class="post

В строке найти:
Код: выделить все
<!-- IF postrow.S_ROW_COUNT is odd -->

Найденную часть строке заменить на:
Код: выделить все
<!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 -->bg3<!-- ELSEIF postrow.S_ROW_COUNT is odd -->

Найти:
Код: выделить все
<hr class="divider" />

Добавить после:
Код: выделить все
 <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><br /><br /><!-- ENDIF -->

Вариант 3 -
Открыть:
styles/subsilver/template/viewtopic_body.html
Найти:
Код: выделить все
<!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->

Заменить на:
Код: выделить все
 <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><tr class="row3"><!-- ELSEIF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->

Найти:
Код: выделить все
<!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->

Заменить на:
Код: выделить все
 <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><tr class="row3"><!-- ELSEIF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->

Вариант 4 -
Найти:
Код: выделить все
 <!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->

Заменить на:
Код: выделить все
<!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><tr class="row3"><!-- ELSEIF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->

Найти:
Код: выделить все
<!-- END postrow -->

Добавить перед:
Код: выделить все
<!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><br /><br /><!-- ENDIF -->

Загрузить все измененные файлы на сервер с заменой.

Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 08:30

От автора rxu -
Исправление ошибки с отображением информации о редактировании сообщения при закрепленном первом сообщении.
Открыть:
viewtopic.php
Найти:
Код: выделить все
// First post on every page
// Show first post on every page if needed
if($topic_data['topic_first_post_show'] && ( $start != 0))
{
   $i = 0;
   $post_list[$i] = $topic_data['topic_first_post_id'] ;
   $i = ($store_reverse) ? $sql_limit : $i+1;
}

Заменить на:
Код: выделить все
// First post on every page
// Show first post on every page if needed
// For the case the user is trying to reach the first half of the topic
if ($topic_data['topic_first_post_show'] && ($start != 0))
{
   if (!$store_reverse)
   {
      $post_list[$i] = $topic_data['topic_first_post_id'];
   }
   $i++;
}

Найти:
Код: выделить все
while ($row = $db->sql_fetchrow($result))
{
   $post_list[$i] = $row['post_id'];
   ($store_reverse) ? $i-- : $i++;
}
$db->sql_freeresult($result);

Добавить после:
Код: выделить все
// First post on every page
// Show first post on every page if needed
// For the case the user is trying to reach the second half of the topic
if ($topic_data['topic_first_post_show'] && ($start != 0) && $store_reverse)
{
   $post_list[$i] = $topic_data['topic_first_post_id'];
}

Александр Лешванов
(можно Николаич)
(можно Николаич) 

  175 First Post On Every Page - дублеж первого поста

Сообщение Разместил Александр Лешванов 07 фев 2017, 08:36

От автора rxu -
Почему отображается { FIRST_POST_SHOW }, а не русское предложение?
Открыть:
language/ru/common.php
Найти:
Код: выделить все
'FIND_USERNAME'         => 'Find a member',

Добавить после:
Код: выделить все
'FIRST_POST_SHOW'      => 'Показывать на каждой странице',

Александр Лешванов
(можно Николаич)
(можно Николаич) 
Следующая страница

Вернуться в 450 модов движка форумов phpBB (до версии 3.0.14)



 • Блок вывода аналогичных по названию других тем нашего форума •