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

19 Апрель 2014, 15:17:27
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Для Prestashop 1.5

1. Добавление нового хука "productListRating" в файл productcomments.php
public function install()
{
    if (!file_exists(dirname(__FILE__).'/'.self::INSTALL_SQL_FILE))
        return false;
    else if (!$sql = file_get_contents(dirname(__FILE__).'/'.self::INSTALL_SQL_FILE))
        return false;
    $sql = str_replace(array('PREFIX_', 'ENGINE_TYPE'), array(_DB_PREFIX_, _MYSQL_ENGINE_), $sql);
    $sql = preg_split("/;\s*[\r\n]+/", trim($sql));
 
    foreach ($sql as $query)
        if (!Db::getInstance()->execute(trim($query)))
            return false;
    if (parent::install() == false ||
        !$this->registerHook('productTab') ||
        !$this->registerHook('extraProductComparison') ||
        !$this->registerHook('productTabContent') ||
        !$this->registerHook('header') ||
        !$this->registerHook('productOutOfStock') ||
        !$this->registerHook('productListRating') ||
        !Configuration::updateValue('PRODUCT_COMMENTS_MINIMAL_TIME', 30) ||
        !Configuration::updateValue('PRODUCT_COMMENTS_ALLOW_GUESTS', 0) ||
        !Configuration::updateValue('PRODUCT_COMMENTS_MODERATE', 1))
            return false;
    return true;
}

2. Код хука "productListRating" для подсчета рейтинга и вывода шаблона блока со звездами.
function hookProductListRating($params)
{
    require_once(dirname(__FILE__).'/ProductComment.php');
    require_once(dirname(__FILE__).'/ProductCommentCriterion.php');
 
    $id_product = $params['idproduct'];
    $product_average = 0;
 
    $grades = ProductComment::getAveragesByProduct($id_product, $this->context->language->id);
    $criterions = ProductCommentCriterion::getByProduct($id_product, $this->context->language->id);
    $grade_total = 0;

    if (count($grades) > 0)
    {
        foreach ($criterions as $criterion)
        {
            if (isset($grades[$criterion['id_product_comment_criterion']]))
            {
                $grade_total += (float)($grades[$criterion['id_product_comment_criterion']]);
            }
        }
 
        $product_average = $grade_total / count($criterions);
    }

    $this->context->smarty->assign('average_total', (int)$product_average);
    return $this->display(__FILE__, '/product-list.tpl');
}

3. Шаблон блока рейтинга, показ количества звезд, product-list.tpl
<div class="star_content clearfix">
{section name="i" start=0 loop=5 step=1}
    {if $smarty.section.i.index lt $average_total}
          <div class="star star_on"><a href=""></a></div>
    {else}
        <div class="star"><a href=""></a></div>       
    {/if}
{/section}
</div>

4. Стили для этого шаблона, можно добавить в файл product_list.css
#product_list li h3
{
    padding:0 0 10px 0;
    font-size:13px;
    color:#000
}
#product_list li .star_content
{
    display: inline-block;
    margin-bottom: 10px;
}

5. Добавление вывода блока рейтинга на странице категорий, шаблон product-list.tpl
{hook h='productListRating' idproduct=$product.id_product}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
22 Апрель 2014, 01:53:39
Ответ #1
  • Новичок
  • *
  • Сообщений: 26
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
24 Сентябрь 2014, 00:27:58
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 105
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для 1.6 кто-то делал подобное?
24 Сентябрь 2014, 11:58:42
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для prestashop 1.6 разница будет только в шаблоне и стилях.
26 Февраль 2017, 22:10:06
Ответ #4
  • Пользователь
  • **
  • Сообщений: 56
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Народ, отпишитесь, пожалуйста по-подробней.
Вот у меня стоит PS 1.6. Хочу, чтобы возле товара был виден его рейтинг в форме звёздочек. Как это сделать? Нужен специальный модель? (порекомендуйте). Или нужно вставлять код?
Заранее Спасибо) ;)
27 Февраль 2017, 11:08:11
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Модуль комментариев выводит рейтинг товара. Модуль стандартный, доступен в prestashop сразу после установки.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
27 Февраль 2017, 23:33:19
Ответ #6
  • Пользователь
  • **
  • Сообщений: 56
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
как он называется? не могу найти. :(
03 Март 2017, 21:18:29
Ответ #7
  • Пользователь
  • **
  • Сообщений: 56
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как называется стандартный модуль комментариев?
04 Март 2017, 12:05:15
Ответ #8
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля