Рейтинг клубам

#1 14 декабря 2012 в 18:07
Подскажите о механизме получения рейтинга клубами...
Как он начисляется?
#2 15 декабря 2012 в 08:53
Поддерживаю вопрос с дополнением. Как поставить рейтинг клубов по численности пользователей, по общему рейтингу, вручную.
#3 10 февраля 2013 в 23:20
Где то встречал информацию, что рейтинг клуба составляется из рейтингов пользователей туда вступивших, но вот что то не пойму — рейтинг у членов клуба растет, а у клуба нет… Как был рейтинг клуба на момент вступления пользователей, так он и остался.
#4 11 февраля 2013 в 04:38

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

Volgomarket
Такая же проблема, люди спрашивают почему рейтинг не растет. Я говорю чтоб больше материала размещали. Вроде пишут и размещают, а рейтинг 0. Такое в одном клубе происходит, в других вроде нормально.
У меня правда версия 1.9. Может в 1.10 это и поправили. В общем я пока не понял есть ли ошибка и веду наблюдения :))
#5 11 февраля 2013 в 22:18

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

Volgomarket
Та же история и у меня.
#6 11 февраля 2013 в 23:45
он от рейтинга клубного блога не зависит?
#7 12 февраля 2013 в 00:22
Рейтинг устанавливается в методе модели компонента клубов, строки 481-502. Вот коммент:
  1. /**
  2.   * Устанавливает рейтинг клубу как сумму рейтингов его участников * 5
  3.   * @return bool
  4.   */
  5. public function setClubRating($club_id){
Метод соответственно вызывается при создании клуба, при вступлении участника в клуб и при выходе из клуба кого-либо. Это для версии 1.10
То есть получается, чтобы пересчитывался рейтинг клуба, нужно чтобы кто-либо из него выходил или вступал.
#8 12 февраля 2013 в 07:21
Марат, Спасибо, хоть теперь более-менее понятно, хотя логически не совсем правильно, получается, что рейтинг клуба не зависит от активной жизни клуба, а зависит от того, кто туда вступил или "выступил" :)
#9 12 февраля 2013 в 08:44

получается, что рейтинг клуба не зависит от активной жизни клуба, а зависит от того, кто туда вступил или "выступил" :)

Volgomarket
Получается, что так. Но можно легко исправить ситуацию. Для этого, в файле frontend.php в любом блоке, где есть строчки
  1. $club = $model->getClub($id);
  2. if(!$club){ cmsCore::error404(); }
Нужно вставить сразу после этих строчек строку
  1. // Пересчитываем рейтинг
  2. $model->setClubRating($club['id']);
Например можно вставить для блока if ($do=='club'){}. Тогда пересчет рейтинга будет производиться при каждом просмотре клуба.
#10 12 февраля 2013 в 10:33
Спасибо, Марат. Я покопался в коде по вашей наводке, что было полезно.
Скажите, а добавление функции на пересчет рейтинга на нагрузке сильно скажется? Может добавить этот пересчет при добавлении материала? Эти действия происходят чаще чем вход/выход пользователя и реже просмотра клуба.
Конечно оптимально поставить все это на крон, мне так кажется. Чтоб баланс соблюсти
#11 12 февраля 2013 в 14:07
Марат, а сделать рейтинг зависимым от рейтинга материалов клуба сложно? рейтинг в зависимости от рейтинга участников — несколько не логично.
#12 12 февраля 2013 в 14:19

рейтинг в зависимости от рейтинга участников — несколько не логично.

picaboo
Я тож задумывался над этим вопросом — зашло пару чел с высоким рейтингом в пустой клуб и он тут же стал круче (по рейтингу), не правильно как-то это. Конечно и от человека рейтинг должен зависеть, но и от материалов размещенных в клубе. Как-то так
#13 12 февраля 2013 в 15:05

Конечно оптимально поставить все это на крон, мне так кажется. Чтоб баланс соблюсти

Роман
Вот для cron. Вставляем в конец файла модели клубов, перед последней закрывающей скобкой }
  1.  
  2. public function setClubsRatingCron(){
  3. $sql = "SELECT id
  4. FROM `cms_clubs`
  5. WHERE published = 1
  6. LIMIT 100";
  7.  
  8. $result = $this->inDB->query($sql);
  9. if(!$this->inDB->num_rows($result)){ return true; }
  10. while($club = $this->inDB->fetch_assoc($result)){
  11. $this->setClubRating($club['id']);
  12. }
  13. return true;
  14. }
  15.  
Далее в админке создаем новую задачу cron. Указываем компонент clubs и метод модели setClubsRatingCron. Остальные пункты на ваше усмотрение. Будет персчитывать рейтинги клубов.
picaboo, можно сделать так, чтобы не был привязан к рейтингу пользователей. Придется всего лишь изменить один метод модели клубов. Но, нужно выработать алгоритм. Отчего будет зависеть рейтинг? Главное понять задачу. А сделать не сложно.
#14 12 февраля 2013 в 16:49
Марат, рейтинг записей блога клуба+рейтинг фотоальбомов клуба складывать?
#15 12 февраля 2013 в 17:22
picaboo, можно сделать. Ближе к ночи постараюсь выложить. Немного доделаю кое-какие дела. А рейтинг самого блога нужно учитывать или только записей? И коэффициент нужен? То есть сумму умножать на 5?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.