Как я могу остановить Magento слияние корзины при входе в систему? - PullRequest
13 голосов
/ 12 апреля 2011

Если вам нужно было войти в Magento и добавить некоторые товары в свою корзину, а затем покинуть сайт, они будут сохранены при следующем возвращении на сайт.

Это, однако, вызывает проблему, когда вы возвращаетесь. Если по возвращении вы добавили товар в корзину без входа в систему, а затем вошли в нее в начале процесса оформления заказа, ваша гостевая и сохраненная корзина будут объединены. Это нежелательно.

Есть ли способ заставить Magento очистить сохраненную корзину при входе в систему, если в вашей текущей корзине есть элементы?

Заранее спасибо

Ответы [ 3 ]

20 голосов
/ 13 апреля 2011

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

  1. Переопределить класс сеанса и заставить его не вызывать слияние.
  2. Переопределить класс кавычек и заставить его никогда не объединять корзины.При таком подходе могут возникать вторичные ошибки, если другие части системы также пытаются объединить корзины.
  3. Подключитесь к событию, заключающему в кавычки вызовы (sales_quote_merge_before), и используйте эту возможность для опустошения одной из тележек.Вы должны были бы определить, когда это должно быть сделано, но это намного чище, чем два других.

Дайте мне знать, если это не ясно каким-то образом.Надеюсь, это поможет!

Спасибо, Джо

0 голосов
/ 29 октября 2013

Я изменил Quote.php (/ Sales / Model /) в строке 1344 в функции слияния следующим образом.

foreach ($this->getAllItems() as $item) {
        $this->removeItem($item->getId());
    }
0 голосов
/ 10 января 2013

спасибо Джозефу Масти, ваш комментарий мне очень помог, я сделал для события / наблюдателя, я использовал событие описаний, а затем удалил цитату следующим образом:

 public function emptyCartUserNoLogged($observer){
    $event = $observer->getEvent();

    $quote = $event->getSource();

    $quote->setIsActive(false);

    $quote->delete();

 }

Большое спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...