Вход • Регистрация

Вывод средней оценки отзывов для товара

  • 24 ноября 2018 г. , редакция: 24 ноября 2018 г.
  • В связи с тем, что по-умолчанию средняя оценка видна только авторизованным пользователям, сделал свое решение.

    Делал только для товара, так как в другой части необходимости не было.

    Код не совсем универсальный, но, если не подойдет, можно подправить чуть.

    файл reviews.custom.php

    Код

    class Reviews extends Controller
    {

    /*
    * Средняя оценка для товара
    */
    new public function average_rating($attributes) {
    //Если ID элемента не указан, то и нечего выводить
    if(!empty($attributes["id"])) {
    $result = $this->model->rating_get($attributes["id"]);
    echo $this->diafan->_tpl->get('info','reviews',$result);

    } else {
    echo '<p style="color: red;">Вы не указали ID элемента, для которого хотите вывести рейтинг</p>';
    }
    }


    }


    Файл reviews.model.custom.php

    у меня параметр с оценкой = 5. Ну как у 99% случаем.

    Код

    class Reviews_model extends Model
    {
    /*
    * Получаем данные из БД для подсчета средней оценки
    */
    new public function rating_get($id) {
    $rating = DB::query_fetch_all("SELECT rp.value as rating FROM {reviews} AS r INNER JOIN {reviews_param_element} AS rp ON rp.element_id=r.id WHERE rp.param_id='5' AND r.element_id='%d'",$id);

    $result = array();

    if(!empty($rating)) {

    //Считаем сумму всех оценок
    $summ_rating = 0;
    foreach($rating as $r) {
    $summ_rating += $r["rating"];
    }

    //Количество отзывов о товаре
    $count = count($rating);

    //Средняя оценка
    $result["rating"] = round(($summ_rating)/($count * 5)*5,1);
    $result["count"] = $count;

    }


    return $result;

    }
    }


    Файл shop.view.id.php

    Код
    echo $this->diafan->_tpl->htmleditor('<insert name="average_rating" module="reviews" id="' . $result["id"] . '">');


    Может косу-то тоже пригодится.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум