Как он начисляется?
Такая же проблема, люди спрашивают почему рейтинг не растет. Я говорю чтоб больше материала размещали. Вроде пишут и размещают, а рейтинг 0. Такое в одном клубе происходит, в других вроде нормально.Как был рейтинг клуба на момент вступления пользователей, так он и остался.
У меня правда версия 1.9. Может в 1.10 это и поправили. В общем я пока не понял есть ли ошибка и веду наблюдения :))
Та же история и у меня.Как был рейтинг клуба на момент вступления пользователей, так он и остался.
/** * Устанавливает рейтинг клубу как сумму рейтингов его участников * 5 * @return bool */ public function setClubRating($club_id){
То есть получается, чтобы пересчитывался рейтинг клуба, нужно чтобы кто-либо из него выходил или вступал.
Получается, что так. Но можно легко исправить ситуацию. Для этого, в файле frontend.php в любом блоке, где есть строчкиполучается, что рейтинг клуба не зависит от активной жизни клуба, а зависит от того, кто туда вступил или "выступил" :)
$club = $model->getClub($id); if(!$club){ cmsCore::error404(); }
// Пересчитываем рейтинг $model->setClubRating($club['id']);
Скажите, а добавление функции на пересчет рейтинга на нагрузке сильно скажется? Может добавить этот пересчет при добавлении материала? Эти действия происходят чаще чем вход/выход пользователя и реже просмотра клуба.
Конечно оптимально поставить все это на крон, мне так кажется. Чтоб баланс соблюсти
Я тож задумывался над этим вопросом — зашло пару чел с высоким рейтингом в пустой клуб и он тут же стал круче (по рейтингу), не правильно как-то это. Конечно и от человека рейтинг должен зависеть, но и от материалов размещенных в клубе. Как-то такрейтинг в зависимости от рейтинга участников — несколько не логично.
Вот для cron. Вставляем в конец файла модели клубов, перед последней закрывающей скобкой }Конечно оптимально поставить все это на крон, мне так кажется. Чтоб баланс соблюсти
public function setClubsRatingCron(){ $sql = "SELECT id FROM `cms_clubs` WHERE published = 1 LIMIT 100"; $result = $this->inDB->query($sql); if(!$this->inDB->num_rows($result)){ return true; } while($club = $this->inDB->fetch_assoc($result)){ $this->setClubRating($club['id']); } return true; }
picaboo, можно сделать так, чтобы не был привязан к рейтингу пользователей. Придется всего лишь изменить один метод модели клубов. Но, нужно выработать алгоритм. Отчего будет зависеть рейтинг? Главное понять задачу. А сделать не сложно.