Перейти к содержанию
CheGennadiy

Категории товаров в корзине [РЕШЕНО]

Рекомендуемые сообщения

Здравствуйте. Подскажите пожалуйста, можно ли в списке отложенных товаров в корзине упорядочить их по категориям, например:

 

Категория "Мебель": заказаны стул, стол, шкаф

Категория "Электроника": заказаны удлинитель, розетка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в списке отложенных товаров в корзине

Вы имеете в виду просто список товаров в корзине? Где должно делиться по категориям? Только на странице корзины или в выпадающей корзине в шапке тоже?

Имеются ли подкатегории на сайте? То есть к примеру мебель->кухонная мебель

А вообще - сделать можно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в списке отложенных товаров в корзине

Вы имеете в виду просто список товаров в корзине? Где должно делиться по категориям? Только на странице корзины или в выпадающей корзине в шапке тоже?

Имеются ли подкатегории на сайте? То есть к примеру мебель->кухонная мебель

А вообще - сделать можно :)

Да, категории имеются: "Комплектация", "Мебель", "Прочие", "Спецодежда", "Электрика", "Картриджи", "Канцтовары", "Бытовая техника", "Инструмент". Получается, только на странице корзины заказчик просит. Буду благодарен, если подскажете как? Мне этот установленный магазин достался по наследству недоработанный, пока ещё не очень понимаю, что за что отвечает тут...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё просто. Раз корзина у нас находится по адресу /index.php?route=checkout/cart

То вероятнее всего за её генерацию(хз как назвать) отвечает файл контроллера cart.php, находящийся в папке checkout

Что ж, идём его искать. Нашли по ожидаемому адресу  \catalog\controller\checkout\cart.php

 

Ищем в нём строку

$products = $this->cart->getProducts(); 

и обращаем на неё внимание :) Именно тут вызывается функция из модели, которая достаёт параметры/характеристики/цены/etc для товаров находящихся в корзине.

А дальше всё вообще просто. Следом у нас идёт цикл, перебирающий и проверяющий все товары из корзины. Именно в него и нужно встроить проверку на совпадение родительских категорий. Каким образом вы их сгруппируете - дело ваше.

Только у товаров тут категории сейчас не указаны. Вернёмся к функции  getProducts(). Она находится в файле \system\library\cart.php

Находим 

$product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1'");

 

И заменяем на 

$product_query = $this->db->query("SELECT *, cd.name as category_name FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category ptc ON (ptc.product_id=p.product_id) LEFT JOIN " . DB_PREFIX . "category_description cd ON (cd.category_id=ptc.category_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1'");

 

тут прошу простить, если допустил ошибку. ночь всё-таки ;)

Далее опускаемся ниже в файле и находим в конце нашей функции getProducts() эту строку.

$this->data[$key] = array(

 

Сюда теперь нужно просто вставить нечто вроде 

'category_name'  => $product_query->row['category_name'],

 

(при желании можно вытаскивать и id категории. возможно по нему сравнивать дальше будет правильнее)

И его смело можно будет использовать как $product['category_name'] для сравнения в цикле, который я упоминал в самом начале

 

Надеюсь ошибок не допустил и написал внятно.

Если нужны комментарии к коду, то могу написать

 

Забыл добавить.

Важно!

Один и тотже товар может в магазине находиться в нескольких категориях.

В этом случае вся ваша затея вообще не имеет смысла. Не будете же вы его дважды в корзине показывать? ;)

Поэтому весь код написан с расчётом на то, что каждый товар относится только к одной категории.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О, спасибо!!! Сегодня занимался своей основной работой. Завтра обязательно попробую и отпишусь :-)

Всё просто. Раз корзина у нас находится по адресу /index.php?route=checkout/cart

То вероятнее всего за её генерацию(хз как назвать) отвечает файл контроллера cart.php, находящийся в папке checkout

Что ж, идём его искать. Нашли по ожидаемому адресу  \catalog\controller\checkout\cart.php

 

Ищем в нём строку

$products = $this->cart->getProducts(); 

и обращаем на неё внимание :) Именно тут вызывается функция из модели, которая достаёт параметры/характеристики/цены/etc для товаров находящихся в корзине.

А дальше всё вообще просто. Следом у нас идёт цикл, перебирающий и проверяющий все товары из корзины. Именно в него и нужно встроить проверку на совпадение родительских категорий. Каким образом вы их сгруппируете - дело ваше.

Только у товаров тут категории сейчас не указаны. Вернёмся к функции  getProducts(). Она находится в файле \system\library\cart.php

Находим 

$product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1'");

 

И заменяем на 

$product_query = $this->db->query("SELECT *, cd.name as category_name FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category ptc ON (ptc.product_id=p.product_id) LEFT JOIN " . DB_PREFIX . "category_description cd ON (cd.category_id=ptc.category_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1'");

 

тут прошу простить, если допустил ошибку. ночь всё-таки ;)

Далее опускаемся ниже в файле и находим в конце нашей функции getProducts() эту строку.

$this->data[$key] = array(

 

Сюда теперь нужно просто вставить нечто вроде 

'category_name'  => $product_query->row['category_name'],

 

(при желании можно вытаскивать и id категории. возможно по нему сравнивать дальше будет правильнее)

И его смело можно будет использовать как $product['category_name'] для сравнения в цикле, который я упоминал в самом начале

 

Надеюсь ошибок не допустил и написал внятно.

Если нужны комментарии к коду, то могу написать

 

Забыл добавить.

Важно!

Один и тотже товар может в магазине находиться в нескольких категориях.

В этом случае вся ваша затея вообще не имеет смысла. Не будете же вы его дважды в корзине показывать? ;)

Поэтому весь код написан с расчётом на то, что каждый товар относится только к одной категории.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал как вы предложили, теперь такая картинка:

В общем, вместо наименования пишется категория и подсказка при наведении на картинку - также имя категории...

post-667735-0-54715100-1367957223_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте.

Подскажите возможно ли данные правки применить к ocstore 2.3.0.2?

Есть задумка показать гостю товар с каких категорий он набрал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Вы комментируете как гость. Если у вас есть аккаунт, пожалуйста, войдите
Ответить в этой теме...

×   Вы вставили контент с форматированием.   Удалить форматирование

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От matroskin92
      300.00 руб
      Скачать/Купить дополнение


      Так же покупают
      Вывод рекомендуемых товаров на основе аналогичных покупок других клиентов вашего интернет-магазина. Чем больше и разнообразнее покупки, тем более точны будут рекомендации модуля в последующем.
       
      ДЕМО
      OPENCART 3
      OPENCART 2.3
      Для того, чтобы увидеть результат работы модуля, добавьте в корзину товар Ipad Classic и перейдите на страницу корзины.
       
      УСТАНОВКА
      Установите модуль стандартым способом Активируйте в списке модулей и произведите необходимую настройку модуля. Добавьте вывод модуля в нужный Вам макет на нужную позицию. (Это не обязательно макет корзины).  
      ОБРАЩАЮ ВНИМАНИЕ
      Если в Вашем интернет-магазине не было покупок или каждая из покупок не содержала больше 1 товара, то модулю нечего будет рекомендовать другим покупателям.
       
      Добавил matroskin92 Добавлено 11.03.2019 Категория Покупки, оформление заказа, корзина Системные требования PHP > 5.6 Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3 ocStore 3.0
      2.3 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет  
    • От sv2109
      Что делает этот модуль?
      Модуль дает возможность изменять изображение на странице товара в зависимости от выбранной опции для этого товара.
      Для этого в админ панели при создании / редактировании товара к нужным изображениям привязываются определенные опции.
       
      Установка
      1. Скопировать все с папки "upload" в корневую папку вашего магазина. Файлы движка не будут перезаписаны.
      2. Установить модуль в панели управления
      3. При необходимости поменяйте настройки
       
      Новое в версии 1.1:
      - добавлена возможность выбирать несколько опций для 1 изображения
      - изображение в корзине соответствует выбранным опциям
       
      Версии движка, на которых тестировался модуль
      - ocStore v1.5.4.1
      - ocStore v1.5.5.1
      - opencart v1.5.6
      но должен работать на всех 1.5.х версиях
      - OpenCart, ocStore 2.0, 2.1, 2.2, 2.3, 3.x  (для получения этих версий - пишите в ЛС автору или на почту sv2109@gmail.com)
       
      Демонстрация работы
       
    • От sv2109
      350.00 руб
      Скачать/Купить дополнение


      Option Image Change - Изменение картинки товара в зависимости от опции
      Что делает этот модуль?
      Модуль дает возможность изменять изображение на странице товара в зависимости от выбранной опции для этого товара.
      Для этого в админ панели при создании / редактировании товара к нужным изображениям привязываются определенные опции.
       
      Установка
      1. Скопировать все с папки "upload" в корневую папку вашего магазина. Файлы движка не будут перезаписаны.
      2. Установить модуль в панели управления
      3. При необходимости поменяйте настройки
       
      Новое в версии 1.1:
      - добавлена возможность выбирать несколько опций для 1 изображения
      - изображение в корзине соответствует выбранным опциям
       
      Версии движка, на которых тестировался модуль
      - ocStore v1.5.4.1
      - ocStore v1.5.5.1
      - opencart v1.5.6
      но должен работать на всех 1.5.х версиях
      - OpenCart, ocStore 2.0, 2.1, 2.2, 2.3, 3.x  (для получения этих версий - пишите в ЛС автору или на почту sv2109@gmail.com)
       
      Демонстрация работы
       
      Добавил sv2109 Добавлено 27.03.2014 Категория Опции Системные требования Сайт разработчика http://sv2109.com Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1 OpenCart.Pro, ocShop Обращение к серверу разработчика  
    • От matroskin92
      450.00 руб
      Скачать/Купить дополнение


      Экспорт корзины в Excel
      Исходя из опыта работы с юридическими лицами, до сих пор многим контрагентам требуется экспорт корзины в формате Excel. Это простое решение, позволяющие сохранить текущую корзину клиента на его компьютер в формат .XLSX нажатием одной клавиши. 
       
      Больше ни один контрагент не потеряет свою корзину на Вашем сайте, а так же не будет присылать скриншоты или фотографии экрана своей корзины Вам на почту.
       
      УСТАНОВКА
      Установите модуль стандартым способом Активируйте в списке модулей и произведите необходимую настройку модуля. Добавьте вывод модуля в нужный Вам макет на нужную позицию.
      ДЕМО OPENCART 3
       
      OPENCART 2.3
      Если будет предметный интерес.
       
      ПОДДЕРЖКА
      Поддержка в личных сообщениях и в комментариях в соответствующей теме на форуме
       
      Добавил matroskin92 Добавлено 07.03.2019 Категория Покупки, оформление заказа, корзина Системные требования Сайт разработчика matro.site Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет  
    • От matroskin92
      Исходя из опыта работы с юридическими лицами, до сих пор многим контрагентам требуется экспорт корзины в формате Excel. Это простое решение, позволяющие сохранить текущую корзину клиента на его компьютер в формат .XLSX нажатием одной клавиши. 
       
      Больше ни один контрагент не потеряет свою корзину на Вашем сайте, а так же не будет присылать скриншоты или фотографии экрана своей корзины Вам на почту.
       
      УСТАНОВКА
      Установите модуль стандартым способом Активируйте в списке модулей и произведите необходимую настройку модуля. Добавьте вывод модуля в нужный Вам макет на нужную позицию.
      ДЕМО OPENCART 3
       
      OPENCART 2.3
      Если будет предметный интерес.
       
      ПОДДЕРЖКА
      Поддержка в личных сообщениях и в комментариях в соответствующей теме на форуме
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.