Товар исчезает из корзины при входе в систему, когда Mage_Sales_Order_Quote переопределяется, чтобы не - PullRequest
1 голос
/ 03 февраля 2012

версия Magento 1.6.2.0 .Я переопределил Mage_Sales_Order_Quote в app/code/local, чтобы не просто увеличивать количество, если установлена ​​опция desiger.У меня есть система дизайна, по которой человек может щелкнуть ссылку в представлении продукта, и он перенаправляется на созданного нами дизайнера, затем продукт добавляется в корзину прагматически.

Я изменил getItemByProduct наследующее:

public function getItemByProduct($product)
{
    $_options = unserialize($product->getCustomOption('info_buyRequest')->getValue());
    $_designs = $_options['options']['designer'];
    foreach ($this->getAllItems() as $item) {
        if ($item->representProduct($product)) {
            $_itemOptions = unserialize($item->getProduct()->getCustomOption('info_buyRequest')->getValue());
            if (!empty($_designs) && !empty($_itemOptions['options']['designer'])) { // consider detecting if this was a re-design
                return false;
            } else {
                return $item;
            }
        }
    }
    return false;
}

Теперь, функциональность работает как задумано, за исключением того факта, что, если я вышел из системы и у меня есть товары в корзине, когда я вхожу, товары снова объединяются, как используемые по умолчаниючтобы быть, а не мое переопределение.Где еще я мог бы посмотреть, чтобы удалить это?У меня включен параметр «Сохранить корзину в базу данных», чтобы сделать корзины постоянными, если это актуально.

1 Ответ

1 голос
/ 03 февраля 2012

Создайте Observer, который прослушивает событие sales_quote_merge_before и очищает сохраненную корзину клиента:

Создайте класс Observer в /app/code/local/{namespace}/{yourmodule}/Model/Observer.php

<?php
class <namespace>_<modulename>_Model_Observer
{
  public function preventMerge(Varien_Event_Observer $observer)
  {
    // Clear the customer's cart
  }

Затем добавьте следующее кВаш файл /app/code/local/ enjnamespace угадываемый /легейский_модулем/etc/config.xml для модуля:

<config>
  ...
  <frontend>
    ...
    <events>
      <sales_quote_merge_before>
        <observers>
          <sales_quote_merge_before_event>
            <class>{modulename}/observer</class>
            <method>preventMerge</method>
          </sales_quote_merge_before_event>
        </observers>
      </sales_quote_merge_before>
    </events>
    ...
  </frontend>
  ...
</config>
...