Magento - Как проверить, был ли товар уже удален из корзины

Я пишу небольшой модуль, который автоматически (по определенным критериям) будет добавлять товар в корзину. Однако, если пользователь впоследствии удалит этот автоматический продукт из корзины, мне нужно знать, чтобы я не добавлял его снова в текущем сеансе.

Содержит ли объект корзины что-нибудь, что может сказать мне, был ли продукт уже удален из корзины?


person sulman    schedule 23.11.2010    source источник


Ответы (2)


Magento не записывает, какие элементы были удалены, вам придется сделать это самостоятельно. Начните с прослушивания события;

app/local/ВАШ МОДУЛЬ/etc/config.xml

<config>
...
    <frontend>
        <events>
            <sales_quote_remove_item>
                <observers>
                    <class>YOURMODULE/observer</class>
                    <method>removeQuoteItem</method>
                </observers>
            </sales_quote_remove_item>
        </events>
    </frontend>
...

app/local/ВАШ МОДУЛЬ/Model/Observer.php

<?php

class YOU_YOURMODULE_Model_Observer
{
    public function removeQuoteItem(Varien_Event_Observer $observer)
    {
        $product = $observer->getQuoteItem()->getProduct();
        // Store `$product->getId()` in a session variable
    }
}

?>

Создайте класс сеанса, который расширяет Mage_Core_Model_Session_Abstract, и используйте его для хранения идентификаторов продуктов, которые вы собираете в указанном выше наблюдателе. Затем вы можете обратиться к этому объекту сеанса (вызываемому Mage::getSingleton()), чтобы увидеть, какие продукты раньше были в корзине.

person clockworkgeek    schedule 24.11.2010
comment
Блестящий часовщик, это как раз то, что мне было нужно. Большое спасибо за это. Я попробую, когда смогу! Спасибо! - person sulman; 24.11.2010

да, вы можете получить текущие товары в корзину следующим образом: -

foreach ($session->getQuote()->getAllItems() as $item) {

    $output .= $item->getSku() . "<br>";
    $output .= $item->getName() . "<br>";
    $output .= $item->getDescription() . "<br>";
    $output .= $item->getQty() . "<br>";
    $output .= $item->getBaseCalculationPrice() . "<br>";
    $output .= "<br>";
}

Эта ссылка может быть полезна http://www.magentocommerce.com/boards/viewthread/19020/

person Shakti Singh    schedule 23.11.2010
comment
Спасибо за ответ, но это не говорит мне, был ли товар в какой-то момент удален из корзины. Если я что-то пропустил? - person sulman; 23.11.2010