Начиная с версии 1.2 в плагине "Группы товаров" есть хелперы для получения сгруппированных отзывов.
Внимание! Для внедрения хелперов нужен опыт редактирования PHP-кода.
Если вы не уверены в своих возможностях, пожалуйста, обратитесь к компетентному специалисту.
Для начала, необходимо в конфигурационном файле перечислить id групп, по которым отзывы товаров будут объединяться. Сделать это нужно по адресу: wa-config/apps/shop/plugins/productgroup/config.php. Если такого файла нет - его нужно создать.
ID группы можно подсмотреть в стандартных хелперах, пример:
Из стандартного хелпера видно, что ID группы равен пяти: {shopProductgroupViewHelper::getCategoryProductBlock($product.id, 5)}
Пример содержимого конфигурационного файла:
<?php
return array(
'reviews_group_ids' => array(1,2,3),
);
{$rating_info = shopProductgroupWaProductReviewsHelper::getProductRatingInfo($product)}
- Возвращает общие данные о рейтинге товара
{$rating_info.average_rate} - средний рейтинг
{$rating_info.reviews_count} - количество опубликованных отзывов
{$products_rating_info = shopProductgroupWaProductReviewsHelper::getProductsRatingInfo($products)}- Возвращает общие данные сразу для нескольких товаров. Удобно использовать на странице категории, например.
{foreach $products_rating_info as $product_id => $rating_info}
{$rating_info.average_rate} - средний рейтинг
{$rating_info.reviews_count} - количество опубликованных отзывов
{/foreach}
Пример использования (Одинаковые количество отзывов и оценка у выделенных товаров из одной группы):
{$count_by_rate = shopProductgroupWaProductReviewsHelper::getProductReviewsCountByRate($product)}
- возвращает количество отзывов для каждой оценки.
Пример использования:
{$reviews = shopProductgroupWaProductReviewsHelper::getProductReviews($product)}
- возвращает массив отзывов для товара, максимум 20 штук, без ответов. Формат данных - как у стандартных отзывов.
{shopProductgroupWaProductReviewsHelper::appendProductLabelToReviews($reviews)}- Добавляет каждому отзыву в массиве данные группы.
{foreach $reviews as $review}
{$review.group_label} - название группы, по которой отзывы были собраны. Если их несколько - берем первую.
{$review.product_label} - настройка "Название ссылки" у товара группы.
{/foreach}
Пример использования:
{$reviews_collection = shopProductgroupWaProductReviewsHelper::buildCollection($product)}
- Возвращает экземпляр класса shopProductgroupProductGroupReviewsCollection. Для гибкого и продвинутого использования.
Настройка:
Эти методы возвращают экземпляр класса - надо сохранять в переменной, иначе smarty выдаст ошибку.
В скобках - значения по умолчанию
{$_ = $reviews_collection->setOffset(20)} - задать сдвиг от начала (0)
{$_ = $reviews_collection->setLimit(50)} - количество отзывов (20)
{$_ = $reviews_collection->setSort('id', 'ASC')} - задать поля сортировки ('datetime', 'DESC'). Используются поля таблицы shop_product_reviews
{$_ = $reviews_collection->setRateFilter(5)} - фильтрация по оценке(не задана). Например, взять отзывы только с оценкой 5
{$_ = $reviews_collection->setStatusFilter('deleted')} - фильтрация по статусу отзыва ('approved'). Например, так получим только удаленные отзывы
{$_ = $reviews_collection->removeRateFilter()} - убирает фильтрацию по оценке
{$_ = $reviews_collection->removeStatusFilter()} - убирает фильтрацию по статусу
Получение данных:
{$is_empty = $reviews_collection->isEmpty()} - true, если нет отзывов
{$reviews = $reviews_collection->getReviews()} - список отзывов
{$reviews_with_replies = $reviews_collection->getReviewsWithReplies()} - список отзывов. У каждого есть поле 'comments' - массив ответов на отзыв
{$reviews_count = $reviews_collection->count()} - количество отзывов в коллекции (*)
{$average_rate = $reviews_collection->averageRate()} - средний рейтинг коллекции (*)
{$count_by_rate = $reviews_collection->countByRate()} - возвращает количество отзывов для каждой оценки (*)
* - не учитывает offset/limit, но учитывает фильтрацию по оценке/статусу