Вывод количества товаров в шапке

Тема в разделе "Дизайн, оформление и шаблоны", создана пользователем XzPrO, 22 июн 2016.

  1. XzPrO

    XzPrO Новичок

    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте уважаемые форумчане! Нужно сделать отображение количества товаров в шапке, (в скобках рядом с корзиной), аналогично тому, как сделано в закладках (пример: http://prntscr.com/bjke4w). Тема стандартная. Версия 2.1.0.2. Подскажите как можно это реализовать. Заранее благодарен!
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    в файле \catalog\controller\common\header.php

    найти
    Код:
    $data['text_shopping_cart'] = $this->language->get('text_shopping_cart');
    заменить на
    PHP:
    $data['text_shopping_cart'] = $this->language->get('text_shopping_cart') . ' (' .$this->cart->countProducts() . ')';
     
  3. XzPrO

    XzPrO Новичок

    Сообщения:
    2
    Симпатии:
    0
    Спасибо, работает, но обновление цифры после добавления товара происходит только после обновления страницы или перехода на другую. Как сделать так, чтобы оно обновлялось как в закладках (автоматически, без обновления страницы)?
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    смотрите пример в common.js
     
    Mat нравится это.
  5. Mat

    Mat Новичок

    Сообщения:
    1
    Симпатии:
    0
    Подскажите пжл, как сделать обновление количество товаров на шапке, просто я новичок и нуждаюсь в помощи...
    Opencart 2.3
    где, что добавить?
    спасибо
     
  6. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    \catalog\controller\checkout\cart.php

    в public function add() {

    смотрим строку
    PHP:
    $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total$this->session->data['currency']));
    это то, что мы видим в \catalog\view\javascript\common.js в строках
    ниже
    Код:
    // Cart add remove functions
    var cart = {
    вот это
    Код:
    $('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
    т.е при нажатии купить, js скрипт обращается в контролер, который и выдает по json в ответ информацию в total

    т.е то что в контроллере $json['total'] = , то в js скрипте это json['total']

    но это все нам не нужно.. это теория :) которая относится к штатной корзине, которая рядом с поиском.

    Но возвращаясь к процессу. Нам нужен common.js и например ниже указанной строчки, добавить
    Код:
    $('.fa.fa-shopping-cart').next().html('в корзине ' + json['total'] + '</span>');
    в итоге получим результат. Может не тот, но все же... есть вся необходимая информация для изменений.
     
  7. Legacy1982

    Legacy1982 Новичок

    Сообщения:
    23
    Симпатии:
    0
    Отображение товаров в корзине.png Здравтсвуйте. Помогите реализовать вывод количества товаров на Opencart 3.

    {{ cart-total }} всегда выводит "0"
     
    Последнее редактирование: 28 дек 2019
  8. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Выше все описано! Внимательно читаем и изучаем.
     
  9. Legacy1982

    Legacy1982 Новичок

    Сообщения:
    23
    Симпатии:
    0
    На сколько я понял, выше описано решение для Опенкарта 2. В третьем релизе в файле header.php нет кода, указанного в посте №2

    Строку:
    $data['text_shopping_cart'] = $this->language->get('text_shopping_cart');
    я вообще в коде не нашел, а на сколько я понял именно она отвечает за визуализацию. Именно по этой причине, изменения в common.js результата не дали.

    Помогите пожалуйста.
     
    Последнее редактирование: 28 дек 2019
  10. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    239
    для тех кто в танке
    задача - "сделать отображение количества товаров в шапке, (в скобках рядом с корзиной)"
    что для этого нужно?
    1. вывести количество в шапке
    2. сделать измение количества при добавлении, удалении товаров в корзину.
    что нужно для пункта 1?
    1. в контроллере catalog/controller/common/header.php получить количество и передать в шаблон
    находим строку
    PHP:
     $data['home'] = $this->url->link('common/home');
    перед ней вставляем
    PHP:
    $data['text_count_cart'] = $this->cart->countProducts();
    в шаблоне catalog/view/theme/*/template/common/header.twig добавляем вывод

    HTML:
    <li><a href="{{ shopping_cart }}" title="{{ text_shopping_cart }}"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ text_shopping_cart }}</span><span id="text_count_cart">({{ text_count_cart }})</span></a></li>
    пункт 2.
    нужно чтобы контроллер catalog/controllet/checkout/cart.php отдавал отдельно количество товаров
    находим (там 2 таких строки)
    PHP:
     $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total$this->session->data['currency']));
    после вставляем
    PHP:
    $json['text_count_cart'] = $this->cart->countProducts();
    теперь нужно обновлять при добавлении, удалении
    файл catalog/view/javascript/common.js
    находим(встречается 3 раза)
    HTML:
    $('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
    после добаляем
    HTML:
    $('#text_count_cart').html('(' + json['text_count_cart'] + ')');
    файл catalog/view/theme/*/template/product/product.twig
    находим
    HTML:
    $('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
    после вставляем
    HTML:
    $('#text_count_cart').html('(' + json['text_count_cart'] + ')');
    обновляем модификаторы, кеш и радуемся
     
    Vlad и Legacy1982 нравится это.
  11. Legacy1982

    Legacy1982 Новичок

    Сообщения:
    23
    Симпатии:
    0
    Огромное человеческое спасибо!!!
    Все работает как часы)
     
  12. beliver

    beliver Новичок

    Сообщения:
    1
    Симпатии:
    0
    Работает!!

    PS: - у меня в файле common.js указанная строчка аж 4 раза повторялась
     
  13. csslamm

    csslamm Новичок

    Сообщения:
    1
    Симпатии:
    0
    Работает только в карточке товара, а в категории не хочет как быть?