Отключить группировку товаров в корзине

cartBeforeSave()

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Yuriy
  • Группа: Пользователь
  • Сообщений: 24
  • Регистрация: 11.11.2010

13.12.2010 11:26

Есть модуль, который позволяет настраивать внешний вид продукта - называется ПродуктКонфигуратор. Модуль самописный. Нужно реализовать в модуле функцию, которая бы отключала группировку товаров в корзине. Т.е. юзер добавил 1 футболку. Потом добавил опять таки эту футболку, в корзине должно быть не 1 товар с кол-вом 2, а 2 товара, две одни и те же футболки.

Юзаю функцию cartBeforeSave($observer). Решил пойти таким путем. Добавить к имени товара случайное число.

static function cartBeforeSave($observer){                                                                                                                                                 
        $event = $observer->getEvent();                                                                                                                                                        
        $req = Mage::app()->getRequest();                                                                                                                                                      
        $items = $event->getQuote()->getItemsCollection();                                                                                                                                     
        $pdf_path = Mage::getSingleton('core/session')->getPaths();                                                                                                                            
                                                                                                                                                  
        $product_id = $req->get('product');                                                                                                                                                    
                                                                                                                                                                                               
        if(!$product_id){                                                                                                                                                                      
            return;                                                                                                                                                                            
        }                                                                                                                                                                                      
        foreach($items as $item){                                                                                                                                                              
            if($item->getProductId() === $product_id){                                                                                                                                                                                                                                                                                                                                      
                $pdf = $_SESSION['PdfFile'];                                                                                                                                                   
                $product_name = $item->getProductName();                                                                                                                                       
                                                                                                                                                                                               
                $item->setDescription('PDF ' . $pdf);                                                                                                                                                                                                                                                            
                $item->setProductName($product_name .' Config: #' . rand(1,1000000));                                                                                                                                                                                                                                                            
                                                                                                                                                                                               
                break;                                                                                                                                                                         
            }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
        }                                                                                                                                                                                      
    }


Но увы, изменений не произошло никаких.
Вопрос: Как поменять имя товара?

Заранее спасибо за ответ!!

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

13.12.2010 14:50

Общепринятые поисковые системы ничего не знают о модуле ПродуктКонфигуратор.

#3 Yuriy
  • Группа: Пользователь
  • Сообщений: 24
  • Регистрация: 11.11.2010

13.12.2010 15:18

Модуль самописный - я его сам написал, по этому и поисковики не знают.
Суть вопроса в том, как можно изменить имя продукта?

Следующий код:
$product_name = $item->getProductName();                                                                                                                                       
$item->setProductName($product_name .' Config: #' . rand(1,1000000));

не работает :(

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

13.12.2010 15:23

Что в данном контексте означает "не работает"?

#5 Yuriy
  • Группа: Пользователь
  • Сообщений: 24
  • Регистрация: 11.11.2010

13.12.2010 18:26

Просмотр сообщенияДмитрий Федюк (13.12.2010 15:23) писал:

Что в данном контексте означает "не работает"?

Продукт попадает в корзину без изменений. Имя продукта остается прежним и он все так же группируется (две футболки не разделяются на различные товары, а их кол-во суммируется)

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

13.12.2010 18:49

А в каком контексте вы меняете название товара?

#7 Yuriy
  • Группа: Пользователь
  • Сообщений: 24
  • Регистрация: 11.11.2010

17.12.2010 18:57

Эта функция вызывается перед сохранением товара в корзене

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

17.12.2010 19:02

Если вы изменили название товара и впредь намерены всегда работать с новым названием - вам надо сохранить изменения объекта-товара в базе данных.

#9 Yuriy
  • Группа: Пользователь
  • Сообщений: 24
  • Регистрация: 11.11.2010

21.12.2010 12:11

Не подскажите кусок кода, как сохранить изменения объекта-товара в БД?
Эта проблема больше не актуальна, обошел другим путем. Но все таки для общего развития интересно знать.

#10 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

21.12.2010 17:00

У объекта товара имеется метод save.

#11 Yuriy
  • Группа: Пользователь
  • Сообщений: 24
  • Регистрация: 11.11.2010

28.12.2010 09:11

а вот как... спасибо:) оказывается, все довольно просто

Поделиться темой: