Отображение не прочитаных коментов в прямом эфире

Вот понадобилось вывести в прямой эфир количество новых коментариев, по аналогу как показывает в списке топиков (на главной или при выборе блога) решение оказалось совсем простым :

1. в файлах шаблона block.stream_topic.tpl и block.stream_comment.tpl добвляем
{if $oTopic->getCountCommentNew()}<span style="color: red;">+{$oTopic->getCountCommentNew()}</span>{/if}

2. и в файле /classes/modules/comment/Comment.class.php находим строчку
$aTargets['topic']=$this->Topic_GetTopicsAdditionalData($aTargetId['topic'],array('blog'=>array('owner'=>array())));

и меняем на такую
$aTargets['topic']=$this->Topic_GetTopicsAdditionalData($aTargetId['topic'],array('blog'=>array('owner'=>array(),'relation_user'),'vote','favourite','comment_new'));


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

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

10 комментариев

avatar
Спасибо, нужная в хозяйстве приколюшка ;)
  • dee
  • 0
avatar
да пожалста )
avatar
В stream_topic выводится в комментах почему то нет =( скорее всего проблема в русскоязычном домене или хосте…
  • dee
  • 0
avatar
проверьте наличие
{if $oTopic->getCountCommentNew()}<span style="color: red;">+{$oTopic->getCountCommentNew()}</span>{/if}
в block.stream_comment.tpl Вашего шаблона. Проблема в русскоязычном домене маловероятна.
avatar
Я все поставил. Оказалось несовместимость с парочкой плагинов.

К всему вышеописанному могу добавить. Что в прямом эфире, непрочитанные сообщения можно выделить зелененьким. для этого делаем следующее:

В файле block.stream_comment.tpl и block.stream_topic.tpl
заменить:
{if $smarty.foreach.cmt.iteration % 2 == 1}class="even"{/if}>


на:
{if $oTopic->getCountCommentNew()}class="even"{/if}


А в style.css

заменить:
.block.stream li.even { background: #f8f8f8; border-top: 1px solid #eee; border-bottom: 1px solid #eee; }


на:
.block.stream li.even { background: #CDF5A6; border-top: 1px solid #eee; border-bottom: 1px solid #eee; }


т.е. просто изменить цвет =)

Теперь все непрочитанные сообщения выделены зеленым. Так же как в полной версии топика
avatar
LiveStreet
avatar
ну это все под конкретно Ваш шаблон ), я сразу написал что на базовом все проверял ).
напишите плис с какими плагинами не совместим, попробуем найти универсальное решение.
avatar
Спасибо дружище, все оказалось проще чем я думал. Респект :)
avatar
Но ведь таким способом будут выведено общее количество комментариев + количество непрочитанных, а не количество прочитанных + количество непрочитанных.
avatar
а кто Вам скзал что данный хак должен выводить количество прочитанных + количество непрочитанных?
да и для вывода количество прочитанных + количество непрочитанных разве сложно организовать в шаблоне матеметическую операцию вычитания (количество прочитанных = общее количество комментариев — количество непрочитанных)?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.