Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

keep unread

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

AEC
У пользователя в phpBB по сути два состояния - залогинен и нет. Соответственно, образно я предлагаю заменить код:

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

если (пользователь_залогинен)
{
    вывести информацию;
}
если (пользователь_не_залогинен)
{
    вывести информацию;
}
... на ...

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

вывести информацию;
А у меня два раза.
Попробуй применить модификацию сначала один раз, потом два раза, тут уже советовать сложно.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert писал(а):AEC
У пользователя в phpBB по сути два состояния - залогинен и нет. Соответственно, образно я предлагаю заменить код:

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

если (пользователь_залогинен)
{
    вывести информацию;
}
если (пользователь_не_залогинен)
{
    вывести информацию;
}
Ок. Сделаем проще... вот код который должен получится после модификации:

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

<table width="100%" cellspacing="0" cellpadding="2" border="0" align="center"> 
<!-- mod : keep unread --> 
...
   <!-- BEGIN switch_user_logged_in --> 
   {LAST_VISIT_DATE}<br /> 
   <!-- END switch_user_logged_in --> 
   <!-- BEGIN switch_user_logged_out --> 
   {LAST_VISIT_DATE}<br /> 
   <!-- END switch_user_logged_out --> 
...
      <!-- BEGIN switch_user_logged_out --> 
      <a href="{U_SEARCH_NEW}" class="gensmall">{L_SEARCH_NEW}</a><br /> 
      <!-- END switch_user_logged_out --> 
      <!-- BEGIN switch_user_logged_in --> 
      <a href="{U_SEARCH_NEW}" class="gensmall">{L_SEARCH_NEW}</a><br /> 
что в данном коде является оператором если??? коментарий?
у меня после добавления такого кода, просто дублируется строка - Вы последний раз заходили ...
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Да, именно комментарий.
Описанную мной модификацию необходимо проводить на чистом от keep unread файле index_body.tpl, тогда все получится как надо.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert тогда хочу вас попросить. покажите мне исходный вариант шапки файла index_body.tpl.
потому как мне кажется, что я уже мог стереть все коментарии <!-- ... -->, т.к. считал их не нужными :oops:
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

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

<table width="100%" cellspacing="0" cellpadding="2" border="0" align="center">
  <tr> 
	<td align="left" valign="bottom"><span class="gensmall">
	<!-- BEGIN switch_user_logged_in -->
	{LAST_VISIT_DATE}<br />
	<!-- END switch_user_logged_in -->
	{CURRENT_TIME}<br /></span><span class="nav"><a href="{U_INDEX}" class="nav">{L_INDEX}</a></span></td>
	<td align="right" valign="bottom" class="gensmall">
		<!-- BEGIN switch_user_logged_in -->
		<a href="{U_SEARCH_NEW}" class="gensmall">{L_SEARCH_NEW}</a><br /><a href="{U_SEARCH_SELF}" class="gensmall">{L_SEARCH_SELF}</a><br />
		<!-- END switch_user_logged_in -->
		<a href="{U_SEARCH_UNANSWERED}" class="gensmall">{L_SEARCH_UNANSWERED}</a></td>
  </tr>
</table>
В этом промежутке действительно надо удалить все комментарии.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

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

в glance новые темы выделяются желтенькой стрелочкой - >
так вот при нажатии на таком вот сообщении у меня ошибка:
Could not obtain newer/older topic information

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') WHERE t.topic_id = 552 AND t.topic_moved_id = 0 ORDER BY p.' at line 3

SELECT p.post_id, t.topic_last_post_id FROM (phpbb_topics t LEFT JOIN phpbb_posts p ON p.topic_id = t.topic_id AND p.post_time > ) WHERE t.topic_id = 552 AND t.topic_moved_id = 0 ORDER BY p.post_time

Line : 140
File : /usr/home/aeclub/www/www.aeclub.net.ua/viewtopic.php


Добавлено спустя 11 минут 31 секунду:

как я выяснил работа мода Glance вообще не согласована с модом keep unread.
т.е. все новые темы в Glance всё также остаются новыми только на время одной сесии. да плюс ещё и ошибка при нажатии на новые темы :(

будут предложения? очень хочется довести это дело до конца. спасибо.
AEC

Сообщение AEC »

вот привожу часть кода гланса (glance.php), которая отвечает за вывод новых топиков на главной странице. я так и не смог понять, как его надо модифицировать, чтобы не было ошибки приведённой мною выше.

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

// Output
$template->set_filenames(array(
        'glance_output' => 'glance_body.tpl')
);

$bullet_pre = 'glance_recent_bullet';

if ( !empty($latest_topics) )
{
        for ( $i = 0; $i < count($latest_topics); $i++ )
        {
                if ( $userdata['session_logged_in'] )
                {
                        $unread_topics = false;
                        $topic_id = $latest_topics[$i]['topic_id'];
                        if ( $latest_topics[$i]['post_time'] > $glance_last_visit )
                        {
                                $unread_topics = true;
                                if( !empty($tracking_topics[$topic_id]) && $glance_track )
                                {
                                        if( $tracking_topics[$topic_id] >= $latest_topics[$i]['post_time'] )
                                        {
                                                $unread_topics = false;
                                        }
                                }
                        }
                        $shownew = $unread_topics;
                }
                else
                {
                        $unread_topics = false;
                        $shownew = false;
                }

                $bullet_full = $bullet_pre . ( ( $shownew && $glance_show_new_bullets ) ? '_new' : '_old' );
                $newest_code = ( $unread_topics && $glance_show_new_bullets ) ? '&view=newest' : '';
                $topic_link = 'viewtopic.php?t=' . $latest_topics[$i]['topic_id'] . $newest_code;

                $template->assign_block_vars('recent', array(
                        'BULLET' => $$bullet_full,
                        'TOPIC_LINK' => $topic_link,
                        'TOPIC_TITLE' => $latest_topics[$i]['topic_title'])
                );
        }
}
else
{
        $template->assign_block_vars('recent', array(
                'BULLET' => $glance_recent_bullet_old,
                'TOPIC_TITLE' => 'None')
        );
}

$template->assign_vars(array(
        'ANNO_HEADING' => $lang['Glance_anno_heading'],
        'ANNO_TEXT' => $lang['Glance_anno'],
        'RECENT_HEADING' => $lang['Glance_recent_heading'])
);
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Поставил оба мода, неплохо работают в паре. Однако в Glance недавно была найдена небольшая ошибка, связанная с обработкой сессий. Поскольку обработка сессий может отличаться (через cookie и через sid), попробуй исправление, приведенное здесь.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

ну вот, внёс исправление в glance.php
нажимаю на новое (подсвеченное) сообщение в табличке гланса и ... :(
Could not obtain newer/older topic information

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') WHERE t.topic_id = 489 AND t.topic_moved_id = 0 ORDER BY p.' at line 3

SELECT p.post_id, t.topic_last_post_id FROM (phpbb_topics t LEFT JOIN phpbb_posts p ON p.topic_id = t.topic_id AND p.post_time > ) WHERE t.topic_id = 489 AND t.topic_moved_id = 0 ORDER BY p.post_time

Line : 140
File : /usr/home/aeclub/www/www.aeclub.net.ua/viewtopic.php


Добавлено спустя 30 минут 44 секунды:

вот привожу код glance_body.tpl, т.к. он у меня изменён в связи со своей спецификой дизайна вместо index_body.tpl

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

<table width=100% cellspacing=0 cellpadding=0 border=0>
<tr>
<td width=62% align=left valign=top>
<table width="100%" cellspacing="0" cellpadding="2" border="0" align="center">
  <tr> 
	<td align="left" valign="bottom"><span class="gensmall">
	
	<!-- BEGIN switch_user_logged_in --> 
   {LAST_VISIT_DATE} /  
   <!-- END switch_user_logged_in --> 
   <!-- BEGIN switch_user_logged_out --> 
   {LAST_VISIT_DATE} / 
   <!-- END switch_user_logged_out -->
   <!-- BEGIN switch_user_logged_out --> 
      <a href="{U_SEARCH_NEW}" class="gensmall">{L_SEARCH_NEW}</a> / 
      <!-- END switch_user_logged_out --> 
      <!-- BEGIN switch_user_logged_in --> 
      <a href="{U_SEARCH_NEW}" class="gensmall">{L_SEARCH_NEW}</a> /
	  <!-- END switch_user_logged_in --> 
<a href="{U_SEARCH_SELF}" class="gensmall">{L_SEARCH_SELF}</a> / <a href="{U_SEARCH_UNANSWERED}" class="gensmall">{L_SEARCH_UNANSWERED}</a> / <a href="{U_SEARCH_STARTEDTOPICS}" class="gensmall">{L_SEARCH_STARTEDTOPICS}</a> / <a href="{U_MARK_READ}" class="gensmall">{L_MARK_FORUMS_READ}</a></span></td>

  </tr>
</table>
<table width=100% cellpadding=2 cellspacing=1 border=0 class=forumline>
<tr> 
<td class=row1><span class=gensmall>{ANNO_TEXT}</span></td>
</tr>
</table> 
</td>

<td width=1%>&nbsp;</td>
<td width=37% align=right valign=top >
<table width="100%" cellspacing="0" cellpadding="2" border="0" align="center">
  <tr><td align="right" valign="bottom"><span class="gensmall">
{CURRENT_TIME}<br>{S_TIMEZONE}
</td>
</tr>
</table>
<table width=100% cellpadding=2 cellspacing=1 border=0 class=forumline>
<tr><td colspan=2 class=row2 height=22><SPAN class=forumlink>{RECENT_HEADING}</SPAN></td></tr>
<tr>
<td class=row1 valign=top>

<table width=100% cellspacing=0 cellpadding=0 border=0>
<!-- BEGIN recent -->
<tr>
<td nowrap=nowrap valign=top>{recent.BULLET}</td>
<td valign=top width=100%><a href="{recent.TOPIC_LINK}" class=genmed>{recent.TOPIC_TITLE}</a></td>
</tr>
<!-- END recent -->
</table>

</td>
</tr>
</table>

</td>
</tr>
</table>

<br>


Добавлено спустя 1 минуту 22 секунды:

Xpert и ещё, сейчас я оставил на форуме этот не работающий вариант, так что можешь зайти и сам увидеть всё своими глазами.
http://www.aeclub.net.ua/
спасибо за помощь.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

AEC
Мне кажется, ты не совсем правильно отредактировал viewtopic.php. Перепроверь модификацию этого файла.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert, так я ж уже два раза делал :?
Последний раз редактировалось AEC 08.11.2004 19:27, всего редактировалось 3 раза.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

AEC
Ошибка 404. :?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert я выслал тебе на мыло.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Вот твой участок кода:

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

$forum_id = $row['forum_id'];
$topic_id = $row['topic_id'];



// get last visit for guest
if ( !$userdata['session_logged_in'] )
{
	$userdata['user_lastvisit'] = $board_config['guest_lastvisit'];
}
Вот он же, но из мода:

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

$forum_id = $row['forum_id'];
$topic_id = $row['topic_id'];

//
// Start session management
//
$userdata = session_pagestart($user_ip, $forum_id);
init_userprefs($userdata);
//
// End session management
//

// get last visit for guest
if ( !$userdata['session_logged_in'] )
{
        $userdata['user_lastvisit'] = $board_config['guest_lastvisit'];
}
Надеюсь, разница хорошо заметна? :evil:
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert а чё злишься-то... щас всё перепроверю.

Добавлено спустя 9 минут 18 секунд:

Xpert ОГРОМНОЕ тебе спасибо - всё работает :)

откуда у меня ошибка пока нет времени анализировать (я не на работе), но обязательно проанализирую.

Добавлено спустя 49 минут 7 секунд:

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

скриншот выслал на мыло.

Вернуться в «Поддержка модов для phpBB 2.0.x»