Улучшаем рейтинг материалов DLE + выводим общую оценку в нужном месте
Для тех, кто не знал, мы недавно обновили наши онлайн инструменты. Сделали их более удобными и функциональными. Но сейчас речь идет не об этом. В процессе реализации мы столкнулись с некоторыми проблемами, а именно:
1. Стандартный рейтинг звездами в DLE показался нам не совсем точным;
2. Нам потребовалось вывести числом общую оценку рейтинга в нужном нам месте.
Первую мы смогли обнаружить с помощью второй проблемы, когда вывели число рейтинга, который показывал нам оценку 4.7, в то время, как звезды показывали нам показатель в 4.5. Решить обе проблемы нам удалось, и сейчас мы расскажем вам, как мы это сделали.
Повышаем точность рейтинга
Для того чтобы сделать ваш рейтинг более точным, выполним следующее:
Открываем файл functions.php в папке /engine/modules/, на 281 строке находим:
if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
else $rating = 0;
if ($rating < 0 ) $rating = 0;
$rating = $rating * 20;
И заменяем все на:
if($rating AND $vote_num) {
$rating = round(($rating / $vote_num), 1);
} else {
$rating = 0;
}
if($rating < 0) {
$rating = 0;
}
$rating = floor($rating * 20);
Вот такими манипуляциями мы сделали наш рейтинг более точным.
Выводим общую оценку рейтинга
Для того чтобы вывести в нужном месте общую оценку рейтинга числом, делаем следующее:
1. Открываем файлы show.full.php в папке /engine/modules/ находим строчку:
$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );
и после нее вставляем:
$tpl->set('{rating_nums}', str_replace(",", ".", round($row['rating'] / max(1, $row['vote_num']), 1)));
Сохраняем и отправляем файл обратно на сайт.
2. Далее, открываем файл show.short.php в папке /engine/modules/ находим строчку:
$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], 1 ) );
и после нее вставляем:
$tpl->set('{rating_nums}', str_replace(",", ".", round($row['rating'] / max(1, $row['vote_num']), 1)));
Сохраняем и отправляем файл обратно на сайт.
3. Действия из шага 2 вы в точности повторяете уже с файлом show.custom.php, который также находится в папке /engine/modules/.
На сайте, в нужном вам месте используйте тег {rating_nums} для вывода общей оценки
Важное замечание, «1» здесь – это сколько должно выводиться знаков после запятой, то есть рейтинг будет в виде 4.7, если вы измените «1» на «2», то будет, например, 4.67.
Ну вот вроде и все, мы с вами сделали небольшой апгрейд стандартного рейтинга DLE, тем самым повысив точность показателей и сделали возможность вывести оценку рейтинга числом в нужном месте.
Если у вас остались вопросы – задавайте их в комментариях.