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

23 Апрель 2014, 12:24:33
Ответ #30
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Цитировать
в /classes есть подозреваемый имя ему - "Category.php"
В классе делай подсчет рейтинга.
23 Апрель 2014, 12:49:08
Ответ #31
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
в /classes есть подозреваемый имя ему - "Category.php"
В классе делай подсчет рейтинга.

Во вложении Category.php
подсчет рейтинга видимо это. Код из файла модуля.
function hookhook_rating($params)
{
if (!$this->getSetting('pros_cons_block'))
{
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'));
}
}

Не пойму где в "Классе" и как сделать пересчет.
Может мне основные файлы выложить?
23 Апрель 2014, 18:33:21
Ответ #32
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Файл Category.php не нужен, если не изменялся. Стандарный можно взять с оф.сервера.
В классе нужно добавить новую функцию, которая будет выбирать рейтинг в бд "product_avg" и склеивать значение рейтинга с набором товаров, массив возвращаемый методом getProducts. Потом в шаблоне  product-list.tpl можно будет использовать эту переменную.
23 Апрель 2014, 23:27:50
Ответ #33
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля

В классе нужно добавить новую функцию, которая будет выбирать рейтинг в бд "product_avg" и склеивать значение рейтинга с набором товаров, массив возвращаемый методом getProducts. Потом в шаблоне  product-list.tpl можно будет использовать эту переменную.
Прилаживаю основные файлы. хук hook_rating
Проясните где это класс? мне не очень понятна формулировка.
И как добавить функцию которая будет выбирать рейтинг?
24 Апрель 2014, 09:26:59
Ответ #34
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Класс Category - описан в файле
/classes/Category.php.

Добавить новую функцию в него, значит переопределить этот файл. Создать новый файл с таким же именем в папке
/override/classes/Category.php

class Category extends CategoryCore
{
  public function getRaiting($id_product)
  {
   // Здесь код новой функции
  }
}
24 Апрель 2014, 11:44:15
Ответ #35
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Класс Category - описан в файле
/classes/Category.php.

Добавить новую функцию в него, значит переопределить этот файл. Создать новый файл с таким же именем в папке
/override/classes/Category.php

class Category extends CategoryCore
{
  public function getRaiting($id_product)
  {
   // Здесь код новой функции
  }
}
В общем я так понял что необходимо создать файл /override/classes/Category.php с содержимым
class Category extends CategoryCore
{
  public function getRaiting($id_product)
  {
   // Здесь код новой функции
  }
}
но вопрос в том где взять код новой функции?
его нужно извлечь из файла модуля?
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);
24 Апрель 2014, 13:43:14
Ответ #36
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Файлы модуля.
Подскажите где искать код функции?
24 Апрель 2014, 14:46:45
Ответ #37
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Тяжелый случай. Ты учился как создавать модули в prestashop или просто издевался?
Вот шаблон для каталога товаров. Замени в своей теме.
24 Апрель 2014, 15:40:19
Ответ #38
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Тяжелый случай. Ты учился как создавать модули в prestashop или просто издевался?
Вот шаблон для каталога товаров. Замени в своей теме.
Случай действительно сложный, однако в итоге все работает!!! Спасибо!

А по решению есть пара вопросов.
Зачем я вообще создавал хук?

приведенный вами код  не использует advanced_review/product-list.tpl
хотя и обращается к нему, 
он использует шаблон (и не только) из файла модуля.
public function hookProductTab($params)
    {
$id_product = (isset($_GET['id_product'])) ? $_GET['id_product'] : 0;
return '<li><a href="#idTab665" id="reviews_tab" class="idTabHrefShort">'.$this->l('Отзывы').' ('.$this->countReviews($id_product).')</a></li>';


}
24 Апрель 2014, 15:45:18
Ответ #39
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Нужно было прочитать справку по модулю. Там все написано. Тогда и не делал бы лишние движения.
Этот модуль использует свой контроллер. Ничего в стандарных классах не нужно добавлять или менять для вывода рейтинга на странице товара. Просто добавить подключение модуля на странице категорий.
24 Апрель 2014, 15:46:25
Ответ #40
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Зато узнал как сделать свой модуль под престу :)
24 Апрель 2014, 15:57:38
Ответ #41
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно было прочитать справку по модулю. Там все написано. Тогда и не делал бы лишние движения.
Этот модуль использует свой контроллер. Ничего в стандарных классах не нужно добавлять или менять для вывода рейтинга на странице товара. Просто добавить подключение модуля на странице категорий.
Работает, вроде без глюков.
А справка то где, по модулю?


Все нашел, и информация всегда была под носом!!!!