Перейти к контенту
  • 0

Отображение новых сообщений в топике


Alex I

Вопрос

Можно ли сделать отображение новых (непрочитанных) сообщений в топике?

По аналогии с отображением новых тем в форуме.

Если можно, то как?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
Как Вы себе это представляете? Как это должно выглядеть?

К стандартному отображению сообщения в теме, состоящему из двух столбцов (данные автора и само сообщение), добавляется третий столбик, в котором находится флажок "прочитанное/непрочитанное сообщение".

Аналогия - список тем в форуме. В первой графе значок "Есть новые ответы/Нет новых ответов".

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

А вот подсказать пользователю, какие сообщения в этой теме он не читал, можно.

Баланс таким образом будет сохранен.

 

Реализация вероятнее всего через RenderRow файла skin_topic.

 

Как считаете, можно реализовать?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В 1.х недоделаная система определения статуса "прочитано".

Например, в топике 17 постов: 15 на первой странице и 2 на второй.

Допустим, 4 непрочитанных.

Если я перешел на первую страницу, движок зафиксировал время моего перехода в топик и пометил все сообщения, написанные ранее, прочитанными. Даже если я не заглянул на вторую страницу и не прочитал 2 последних сообщения - эти сообщения будут иметь статус прочитанных.

Информация о "прочитанности" хранится в куках, а не в БД.

 

ИМХО, нет смысла вешать дополнительные флажки.

 

А вот информацией о пользователе можно пользоваться для насыщения страницы релевантными словами. Те же статусы пользователей можно насытить словами, по которым хочешь находиться в поисковках. ИМХО, крайне полезная штука.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
В 1.х недоделаная система определения статуса "прочитано".

Например, в топике 17 постов: 15 на первой странице и 2 на второй.

Допустим, 4 непрочитанных.

Если я перешел на первую страницу, движок зафиксировал время моего перехода в топик и пометил все сообщения, написанные ранее, прочитанными. Даже если я не заглянул на вторую страницу и не прочитал 2 последних сообщения - эти сообщения будут иметь статус прочитанных.

Информация о "прочитанности" хранится в куках, а не в БД.

 

Сложно.

Большое спасибо за подробный ответ :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Как Вы себе это представляете? Как это должно выглядеть?

К стандартному отображению сообщения в теме, состоящему из двух столбцов (данные автора и само сообщение), добавляется третий столбик, в котором находится флажок "прочитанное/непрочитанное сообщение".

Аналогия - список тем в форуме. В первой графе значок "Есть новые ответы/Нет новых ответов".

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

А вот подсказать пользователю, какие сообщения в этой теме он не читал, можно.

Баланс таким образом будет сохранен.

 

Реализация вероятнее всего через RenderRow файла skin_topic.

 

Как считаете, можно реализовать?

 

Ну так это уже в принципе неявно сделано.

Вы нажимаете на иконку gonewpost и форум автоматически перемещает вас к первому новому посту в теме. Это сообщение и все остальные посты ниже являются новыми.

 

В 1.х недоделаная система определения статуса "прочитано".

Например, в топике 17 постов: 15 на первой странице и 2 на второй.

Допустим, 4 непрочитанных.

Если я перешел на первую страницу, движок зафиксировал время моего перехода в топик и пометил все сообщения, написанные ранее, прочитанными. Даже если я не заглянул на вторую страницу и не прочитал 2 последних сообщения - эти сообщения будут иметь статус прочитанных.

Информация о "прочитанности" хранится в куках, а не в БД.

 

ИМХО, нет смысла вешать дополнительные флажки.

 

А вот информацией о пользователе можно пользоваться для насыщения страницы релевантными словами. Те же статусы пользователей можно насытить словами, по которым хочешь находиться в поисковках. ИМХО, крайне полезная штука.

Есть же модификация для 1.х, которая эту систему перемещает в БД. Исправляет проблему раз и навсегда (правда даёт другие, но это, как говорит Каневский "совсем другая история.." (ц) :D )

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Ну так это уже в принципе неявно сделано.

Вы нажимаете на иконку gonewpost и форум автоматически перемещает вас к первому новому посту в теме. Это сообщение и все остальные посты ниже являются новыми.

Это всё понятно, но пользователи, особенно привыкшие к другим движкам типа phpBB и vBulletin хотят непосредственно в самой теме видеть с какого места начинаются непрочитанные сообщения. Отчасти это связано с тем, что при большом количестве картинок место, на которое был перекинут фокус по ссылке #nnn уезжает вниз и найти его после загрузки всей страницы очень сложно. Также, если сначала прочитал всю страницу обсуждения, а потом хочешь вернуться к первому непрочитанному сообщению, чтобы начать отвечать, то просто так это сообщение не найдёшь: или копайся в них или перезагружай страницу. Это неудобно.

 

Выглядит это элементарно. Слева от даты сообщения в списке сообщений есть крошечный значок to_post_off.gif. Для непрочитанных сообщений картинка должна быть to_post.gif. В phpBB этот значок для непрочитанных сообщений просто другого цвета, оранжевый, например.

 

Уж не знаю, где и искать решение — неужели этого никто не делал?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Выглядит это элементарно. Слева от даты сообщения в списке сообщений есть крошечный значок to_post_off.gif. Для непрочитанных сообщений картинка должна быть to_post.gif. В phpBB этот значок для непрочитанных сообщений просто другого цвета, оранжевый, например.
Хорошая идея.

Займусь при случае.

 

Собственно, сделал.

 

skin_topic.php

Найти:

		<!-- POSTED DATE DIV -->

	<div align='left' class='row4' style='float:left;padding-top:4px;padding-bottom:4px'>

Добавить ниже:

<script type="text/javascript">
sURLt = location + '';
if(sURLt.split('#entry')!=sURLt)
{
firstnewpid = sURLt.split('#entry')[1]*1
ispid = {$post['pid']}*1
if(ispid<firstnewpid)document.write("<img src='{$ibforums->vars['img_url']}/f_norm_no.gif' alt='Это сообщение прочитано' width=18 height=12 border=0>");
else document.write("<img src='{$ibforums->vars['img_url']}/f_norm.gif' alt='Это сообщение не прочитано' width=18 height=12 border=0>");
}
</script>

Альты загонять в ленги поленился. Если кому надо - пусть сам загоняет.

 

Будет показывать и на view=getlastpost...

И не будет показывать при переходе на следующую страницу...

Но это предел возможностей джаваскрипт. Заморачиваться с пхп в этом вопросе я тоже поленюсь. :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Собственно, сделал.

О, спасибо, поправил под 2.3, всё работает, как временное решение вполне подойдёт.

 

В skin_topic.php (skin_topic -> RenderRow) найти

 

{$post['post_icon']}<img src='{$this->ipsclass->vars['img_url']}/to_post_off.gif' alt='{$this->ipsclass->lang['to_post_alt']}' border='0' style='padding-bottom:2px' />

заменить на

 

<script type="text/javascript">
sURLt = location + '';
if (sURLt.split('#entry') != sURLt)
{
	firstnewpid = sURLt.split('#entry')[1] * 1;
	ispid = {$post['pid']} * 1;

	if (ispid < firstnewpid) document.write ("<img src='{$this->ipsclass->vars['img_url']}/to_post_off.gif' alt='{$this->ipsclass->lang['to_post_alt']}' border='0' style='padding-bottom:2px' />");
	else document.write ("<img src='{$this->ipsclass->vars['img_url']}/to_post.gif' alt='{$this->ipsclass->lang['to_post_alt']}' border='0' style='padding-bottom:2px' />");
}
else
{
	document.write ("<img src='{$this->ipsclass->vars['img_url']}/to_post_off.gif' alt='{$this->ipsclass->lang['to_post_alt']}' border='0' style='padding-bottom:2px' />");
}
</script>

 

В идеале, конечно, сделать бы это средствами PHP, но тут надо подробно разбирать то, как форум хранит непрочитанные сообщения. Если не умру от лени и никто другой к тому времени не сделает - займусь. :D

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.