Итак, собственно не устроил имеющийся вывод рейтинга. Т.е. если проголосовало 2 человека с оценками 4 и 5, то будет выставлено 4 звезды и отображаться оценка будет как 4, хотя на самом деле оценка 4.5
И так, чтобы во всплывающей подсказке отображалась верная оченка и стояло 4,5 звезды вместо 4 нужно выполнить несложные манипуляции...
Приступим.
Скопировать файл во вложении в директорию
catalog/view/theme/default/image/
открываем файл catalog/model/catalog/review.php
ищем строку 17
return (int)$query->row['total'];меняем на
return $query->row['total'];
открываем файл catalog/controller/product/product.php
Добавляем после строки
$average = $this->model_catalog_review->getAverageRating($this->request->get['product_id']);строку
$num_stars = $average * 16;Ищем строку
$this->data['text_stars'] = sprintf($this->language->get('text_stars'), $average);меняем на
$this->data['text_stars'] = sprintf($this->language->get('text_stars'), round($average, 1));ищем строку
$this->data['average'] = $average;ниже добавляем
$this->data['num_stars'] = $num_stars;
открываем файл catalog/view/theme/default/template/product/product.tpl
ищем строку
<img src="catalog/view/theme/default/image/stars_<?php echo $average . '.png'; ?>" alt="<?php echo $text_stars; ?>" style="margin-top: 2px;" />меняем на
<div class="desc_rate"> <ul class="rating" title="<?php echo $text_stars; ?>"> <li class="current-rating" style="width:<?php echo $num_stars; ?>px;"> [/list]</div>
открываем файл catalog/view/theme/default/stylesheet/stylesheet.css
в любое место добавляем
.desc_rate { background: url(../image/stars.png) repeat-x; height:16px; width:80px; }.rating { margin:0; padding:0; }.rating li { list-style: none; }.current-rating { background: url(../image/stars.png) repeat-x left bottom; height:16px; }
открываем catalog/view/theme/default/template/product/category.tpl
ищем
<?php if ($products[$j]['rating']) { ?> <img src="catalog/view/theme/default/image/stars_<?php echo $products[$j]['rating'] . '.png'; ?>" alt="<?php echo $products[$j]['stars']; ?>" /> <?php } else { ?>меняем на
<?php if ($products[$j]['rating']) { ?><div class="desc_rate"> <ul class="rating" title="<?php echo $products[$j]['stars']; ?>"><li class="current-rating" style="width:<?php echo $products[$j]['num_stars']; ?>px;">[/list] </div><?php } else { ?>Открываем catalog/controller/product/category.phpищем
'rating' => $rating,ниже добавляем
'num_stars' => $rating * 16,ищем
'stars' => sprintf($this->language->get('text_stars'), $rating),меняем на
'stars' => sprintf($this->language->get('text_stars'), round($rating, 1)),Рейтинг для категорий и в подробном чтении информации о товаре поменяли. Мне этого достаточно, поэтому возможно не везде будет теперь работать рейтинг. Кому нужно еще где поменять, делать по аналогии, либо писать сюда, я помогу.