Автор Тема: Вывод рейтинга товара в категории товара.  (Прочитано 6502 раз)

16 Апрель 2014, 23:01:32
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нашел сайт где реализован вывод рейтинга товара, в категории товаров, (те возле каждого товара можно обнаружить рейтинг (звездочки) к товару не заходя в карточку товара)
используют стандартный модуль в престашопе, модуль называется "Отзывы о товарах v2.1 от PrestaShop"
Пример http://www.skay-shop.com.ua/108-samsung/
Как они смогли вывести рейтинг из модуля?
17 Апрель 2014, 11:56:00
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Вывести можно в любом месте, для этого нужно:
1. Добавить новый хук
- в файл productcomments.php, в метод install();
- в контроллер CategoryController;
- в шаблон product-list.tpl.
2. В модуле productcomments добавить вывод рейтинга для нового хука.
3. Создать шаблон tpl для блока рейтинга.
4. Добавить стили этого блока в product_list.css
17 Апрель 2014, 23:19:56
Ответ #2
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вывести можно в любом месте, для этого нужно:
1. Добавить новый хук
- в файл productcomments.php, в метод install();
- в контроллер CategoryController;
- в шаблон product-list.tpl.
2. В модуле productcomments добавить вывод рейтинга для нового хука.
3. Создать шаблон tpl для блока рейтинга.
4. Добавить стили этого блока в product_list.css

Спасибо за самый реальный ответ за длительное время.
Хотелось бы использовать вместо стандартного модуля с престы, модуль "Advanced Review v2.1"
Я так понимаю что это подойдет и для этого модуля, и для другого.
18 Апрель 2014, 10:53:29
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Этот метод подходит для любого модуля.
18 Апрель 2014, 14:38:53
Ответ #4
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
http://prestashop-forum.ru/index.php/topic,1669.0.html

Здесь есть информация о создании хука, все просто и понятно описано, однако непонятны формулировка,
Цитировать
Лучше переопределить этот класс и создать в "override/classes/" файл FrontController.php, где описать новый хук:

У меня в пути "override/classes/"  нет файла FrontController.php, в этом каталоге есть только "_FrontController.php"

Понимаю так что нужно будет создать "FrontController.php" с содержимым
(с своими названиями хука конечно)
class FrontController extends FrontControllerCore {
        public function displayHeader()
        {
        if (!self::$initialized)
            parent::init();
        self::$smarty->assign(array(
                'HOOK_MYHOOK' => Module::hookExec('myhook')
                ));
               return parent::displayHeader();
}
}




18 Апрель 2014, 14:48:36
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Для prestashop 1.4 может не работать переопределение класса FrontController.
Попробуйте сначала добавить измения в базовый класс.
18 Апрель 2014, 15:02:32
Ответ #6
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для prestashop 1.4 может не работать переопределение класса FrontController.
Попробуйте сначала добавить измения в базовый класс.
А как тогда добавить изменения в базовый класс, и пожалуйста если не составит труда, объясните что такое "Базовый класс".
18 Апрель 2014, 15:18:12
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Базовый - это стандарный, оригинальный.
/classes/FrontController.php
Ищите место где определяются хуки шаблона
self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
и добавляете свой хук.
'HOOK_MYHOOK' => Module::hookExec('myhook'),
19 Апрель 2014, 11:55:03
Ответ #8
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Базовый - это стандарный, оригинальный.
/classes/FrontController.php
Ищите место где определяются хуки шаблона
self::$smarty->assign(array(
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
и добавляете свой хук.
'HOOK_MYHOOK' => Module::hookExec('myhook'),

Сделал примерно как вы описали, рейтинг показывался но показывал отсутствие рейтинга просто серые звезды,
поковыряв и поискав аналоги в модуле пришел к выводу что нужно поставить в файл таким образом
function hookhook_rating($params)
{   


global $smarty;
$id_product = (isset($_GET['id_product'])) ? $_GET['id_product'] : 0;
$avg = Db::getInstance()->getRow('SELECT SUM(rt.`rate`)/COUNT(rt.`rate`) AS avg
FROM '._DB_PREFIX_.'invertus_reviews AS r
LEFT JOIN '._DB_PREFIX_.'invertus_review_ratings AS rt ON (rt.`review_id` = r.`id`)
WHERE r.`active` = "1" AND r.`product_id` = "'.$id_product.'"');
$product_avg = $avg['avg'];

$reviews_count = $this->countReviews($id_product);

$smarty->assign('product_avg', $product_avg);
$smarty->assign('reviews_count', $reviews_count);

return $this->display(__FILE__, '/rating_list.tpl');
}

В rating_list.tpl оставил только звездочки и тд, все работает замечательно, и правельно отображает рейтинг, НО только на странице товара...
Подскажете почему в категории товаров, звезды рейтинга отображают отсутствие  рейтинга?
19 Апрель 2014, 12:39:06
Ответ #9
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В товарах (product.tpl) работает и хук - и исправно рейтинг,
на странице категории в файле product-list.tpl - хук работает а звездочки показывают что рейтинга нету т.е. серые звезды.
А нужно чтоб именно там и работало, в категориях(((
19 Апрель 2014, 15:22:08
Ответ #10
20 Апрель 2014, 15:50:28
Ответ #11
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
22 Апрель 2014, 11:45:46
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В товарах (product.tpl) работает и хук - и исправно рейтинг,
на странице категории в файле product-list.tpl - хук работает а звездочки показывают что рейтинга нету т.е. серые звезды.
А нужно чтоб именно там и работало, в категориях(((
Стили подключаются правильно?
Сравните код 2 страниц.
22 Апрель 2014, 12:01:49
Ответ #13
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В товарах (product.tpl) работает и хук - и исправно рейтинг,
на странице категории в файле product-list.tpl - хук работает а звездочки показывают что рейтинга нету т.е. серые звезды.
А нужно чтоб именно там и работало, в категориях(((
Стили подключаются правильно?

стили не обязательны так как выводит просто картинки где желтая звездочка - выводит modules/advanced_review/icon/star.png
где серая  modules/advanced_review/icon/star_d.png
Хитростей со стилями нету.

Цитировать
Сравните код 2 страниц.

Поясните, что именно сравнить?
22 Апрель 2014, 12:04:53
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Если звезды показывает, то хук работает. Цвета регулируются стилями.