Вывод рейтинга товара в категории товара.

Автор induk, 16 апреля 2014, 23:01:32

« назад - далее »

coder

Тебе пишут как в стандарном, а для  advanced_review нужно проверять отличия в выводе рейтинга на этих страницах.

induk

Цитата: coder от 22 апреля 2014, 12:04:53
Если звезды показывает, то хук работает. Цвета регулируются стилями.

У меня по другому,
вот темплейт модуля
{section name=i loop=5}
{if $smarty.section.i.iteration <= $product_avg}
<img src="{$base_dir}modules/advanced_review/icon/star.png" />
{else}
<img src="{$base_dir}modules/advanced_review/icon/star_d.png" />
{/if}
{/section}


Тут именно 2 вида звезд первый желтый второй серый, и открывал в отдельности, один желтый другой серый.

В product-list.tpl хук работает но модуль не имеет связи с базой или чем-то еще, поэтому не в курсе о рейтинге товара.
Я так понимаю что ему нужно скормить данные
возможно эти

$reviews = Db::getInstance()->ExecuteS('SELECT r.*'.$order_rate.'
FROM '._DB_PREFIX_.'invertus_reviews AS r
WHERE r.`active` = "1" AND r.`product_id` = "'.intval($this->product->id).'"
ORDER BY '.$order.' DESC
LIMIT '.$limitation);

induk

Цитата: coder от 22 апреля 2014, 12:09:36
Тебе пишут как в стандарном, а для  advanced_review нужно проверять отличия в выводе рейтинга на этих страницах.

Можете подсказать в каких файлах нужно искать отличия? Могу их выложить.

Adik

Запрвос к бд работает, ошибки не выдает?
Выведите полученный результат (у товара у которого есть рейтинг).
{$product_avg|var_dump}

induk

Цитата: Adik от 22 апреля 2014, 14:38:34
Запрвос к бд работает, ошибки не выдает?
Выведите полученный результат (у товара у которого есть рейтинг).
{$product_avg|var_dump}
добавив в product-list.tpl   пишет  - NULL, хотя товар имеет рейтинг
для того же товара но уже в карточке товара product.tpl  пишет - string(6) "3.5000" 


Adik

ID товара не определяется
$id_product = (isset($_GET['id_product'])) ? $_GET['id_product'] : 0;

induk

Цитата: Adik от 22 апреля 2014, 14:53:41
ID товара не определяется
$id_product = (isset($_GET['id_product'])) ? $_GET['id_product'] : 0;
Это влепить в product-list.tpl?

mAgency

Цитата: induk от 22 апреля 2014, 15:02:17
Это влепить в product-list.tpl?
Нет, это код не работает.
На странице товара хук вызывается 1 раз, ид товара определено, поэтому работает.
На странице категорий вызыв хука рейтинга должен происходить для каждого товара.
Смотрите мой пост про вывод рейтинга для prestashop 1.5. Там ид товара передается в параметрах вызываемого метода.
$id_product = $params['idproduct'];
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

induk

Цитата: mAgency от 22 апреля 2014, 16:34:19
Цитата: induk от 22 апреля 2014, 15:02:17
Это влепить в product-list.tpl?
Нет, это код не работает.
На странице товара хук вызывается 1 раз, ид товара определено, поэтому работает.
На странице категорий вызыв хука рейтинга должен происходить для каждого товара.
Смотрите мой пост про вывод рейтинга для prestashop 1.5. Там ид товара передается в параметрах вызываемого метода.
$id_product = $params['idproduct'];
Мне интересно, подойдет ли описанный вами метод для престы 1,4 и модуля "advanced_review"?

Виталий

Cоздание интернет сайтов Webstudio UwK

induk

Цитата: Adik от 22 апреля 2014, 14:38:34
Запрвос к бд работает, ошибки не выдает?
Выведите полученный результат (у товара у которого есть рейтинг).
{$product_avg|var_dump}
{$product_avg|var_dump} дал результат NULL,
Как сделать чтоб он работал в  product-list.tpl?

tigran

#26
{$product_avg|var_dump} всегда выдаст NULL. Так как в prestashop 1.4 переменную не передать в хук.  С ним такой способ не подойдет. Нужно в контроллере CategoryController.php добавить функцию вызова модуля рейтинга с передачей ид товара и там же в функции process() привязать показ блока рейтинга к переменной смарти. В общем, гемор еще тот. Лучше другой модуль поискать или переписать вывод рейтинга на ajax, тогда можно ид товара подгружать при показе товаров.

Или же делать подсчет рейтинга в классе Category, а не в модуле. Тогда модуль не нужен вообще.

induk

Цитата: tigran от 23 апреля 2014, 11:05:44
{$product_avg|var_dump} всегда выдаст NULL. Так как в prestashop 1.4 переменную не передать в хук.  С ним такой способ не подойдет. Нужно в контроллере CategoryController.php добавить функцию вызова модуля рейтинга с передачей ид товара и там же в функции process() привязать показ блока рейтинга к переменной смарти. В общем, гемор еще тот. Лучше другой модуль поискать или переписать вывод рейтинга на ajax, тогда можно ид товара подгружать при показе товаров.

Или же делать подсчет рейтинга в классе Category, а не в модуле. Тогда модуль не нужен вообще.


{$product_avg|var_dump} работает но только на странице товара, в созданном мною хуке.

Вопрос в том, как добавить функцию вызова рейтинга с передачей ид товара?

coder

#28
Написали же, в престе 1.4 нельзя передать ид в хук.

Как сделать вывод tigran посоветывал. В классе Category добавляешь функцию которая будет подсчитывать рейтинг у товаров product_avg (как в модуле) и присваивать эту переменную для использования в шаблоне, потом в шаблоне делаешь вывод звезд (не хук, а код из своего хука вставь).

induk

#29
Цитата: coder от 23 апреля 2014, 12:09:59
Написали же, в престе 1.4 нельзя передать ид в хук.

Как сделать вывод tigran посоветывал. В классе Category добавляешь функцию которая будет подсчитывать рейтинг у товаров product_avg (как в модуле) и присваивать эту переменную для использования в шаблоне, потом в шаблоне делаешь вывод звезд (не хук, а код их своего хука вставь).
файл "CategoryController.php" не могу найти, искал в  /override/classes и /classes
в /classes есть подозреваемый имя ему - "Category.php"

Как В классе Category добавить функцию  подсчитывания  рейтинга у товаров product_avg?