Изменение системы рейтинга для блогов

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

upd

Как оказалось хак для работы такой системы уже есть! Продублировал из этого поста.

Открываем /classes/modules/rating/Rating.class.php

и заменяем:
/**
* Сохраняем силу и рейтинг
*/
$oUserTopic=$this->User_GetUserById($oTopic->getUserId());
$iSkillNew=$oUserTopic->getSkill()+$iValue*$iDelta;
$iSkillNew=($iSkillNew<0)? 0: $iSkillNew;
$oUserTopic->setSkill($iSkillNew);
$oUserTopic->setRating($oUserTopic->getRating()+$iValue*$iDelta/2.73);
$this->User_Update($oUserTopic);
return $iDeltaRating;


на:
/**
* Сохраняем силу и рейтинг
*/
$oUserTopic=$this->User_GetUserById($oTopic->getUserId());
$iSkillNew=$oUserTopic->getSkill()+$iValue*$iDelta;
$iSkillNew=($iSkillNew<0)? 0: $iSkillNew;
$oUserTopic->setSkill($iSkillNew);
$oUserTopic->setRating($oUserTopic->getRating()+$iValue*$iDelta/2.73);
$this->User_Update($oUserTopic);

$oBlog=$this->Blog_GetBlogById($oTopic->getBlogId());
$oBlog->setRating($oBlog->getRating()+$iValue*$iDelta/2.73);
$this->Blog_UpdateBlog($oBlog);

return $iDeltaRating;


Проголосовав за топик, к рейтингу блога пойдёт 0,05 рейтинга.

21 комментарий

avatar
было бы очень неплохо) ведь логично — хорошие топики, хороший блог.
avatar
livestreet.ru/blog/4462.html — нашёл. может стоит это оформить как плагин…
avatar
но мне кажется что для версии 0,4,2 это не актуально. нужен другой способ. или я ошибаюсь, поскольку не могу найти файл Rating.class.php
avatar
он там есть
avatar
classes\modules\rating\ тут он
avatar
нашёл.
avatar
посмотри в поиске, я выкладывал код, который обеспечивает работу такой системы
avatar
выше комментарии адресованы вам. ошибься маленько )
avatar
реализация совсем простая.
берете файл \include\ajax\voteTopic.php и допасываете в него кусок кода из \include\ajax\voteBlog.php, можно немного изменить расчет голоса
avatar
а можно по-подробнее? =)
avatar
на скорую руку…
в \include\ajax\voteTopic.php после кода
if ($oEngine->Vote_AddVote($oTopicVote) and $oEngine->Topic_UpdateTopic($oTopic)) {

добавить
$oBlog=$oEngine->Blog_GetBlogById($oTopic->getBlogId());
    						if (in_array($iValue,array('1','-1'))) {
    							$oBlogVote=Engine::GetEntity('Vote');
    							$oBlogVote->setTargetId($oBlog->getId());
    							$oBlogVote->setTargetType('blog');
    							$oBlogVote->setVoterId($oUserCurrent->getId());
    							$oBlogVote->setDirection($iValue);
    							$oBlogVote->setDate(date("Y-m-d H:i:s"));
    							$iVal=(float)$oEngine->Rating_VoteBlog($oUserCurrent,$oBlog,$iValue);
    							$oBlogVote->setValue($iVal);
    							$oBlog->setCountVote($oBlog->getCountVote()+1);
    							$oEngine->Blog_UpdateBlog($oBlog);
    						}

и советую расчет рейтинга в строчке
$iVal=(float)$oEngine->Rating_VoteBlog($oUserCurrent,$oBlog,$iValue);

придумать свой.

ну и не идеальный вариант не претендую
avatar
спасибо)
avatar
а если не придумать свой расчёт рейтинга, то насколько изменится рейтинг Блога от одного голоса? 0,05?

Спасибище за код.
avatar
senks)
avatar
Т.е. в данный момент конкретно на сайте livestreet.ru голосование за топик находящийся в коллективных блогах не влияет на рейтинг самого блога? И то что Блог разработки LiveStreet находится на первом месте это следствие голосования конкретно за сам блог? Кстати ни разу не голосовал тут за сами блоги, как то и мысли не приходило это сделать.
avatar
Именно так
avatar
Модификация для 0.5 актуальна?
avatar
Присоединяюсь к вопросу. Кстати, зависит ли количество прибавленного блогу рейтинга от силы и рейтинга пользователя?
avatar
а как в данном случае отключить голосование за сам блог, что бы исключительно рейтинг рос за счет рейтинга топиков в блоге?
avatar
удалить в шаблоне кнопки "+" "-"
avatar
получается старый блог всегда будет наверху, так как он пролайкан больше
а не лучше было сделать все голосования за топики в данном блоге(т.е что выше сделали), деленные на кол-во топиков в этом блоге. т.е средний бал за топик.


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