удалить корзину с cronjob в Magento - PullRequest
1 голос
/ 06 июля 2011

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

    require_once($_SERVER['DOCUMENT_ROOT'].'/app/Mage.php');
$app = Mage::app();
Mage::getSingleton('core/session', array('name' => 'frontend'));

Mage::getSingleton('checkout/session')->clear(); // Try this

foreach( Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item ){
 Mage::getSingleton('checkout/cart')->removeItem( $item->getId() )->save(); // or try that
}

header('Location: /'); // send them back to root (or /magento/ if stored in a subfolder)

или

foreach( Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item ){
Mage::getSingleton('checkout/cart')->removeItem( $item->getId() )->save();
}

но не работает в хрон. в чём проблема?

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Cronjobs не запускаются из одного сеанса пользователя, поэтому такие вызовы, как Mage::getSingleton('checkout/cart'), не будут получать корзину пользователя. Вам нужно будет вызвать конкретную корзину каждого пользователя, чтобы очистить ее от cron.

Надеюсь, это поможет!

Спасибо, Джо

0 голосов
/ 14 июля 2011

Попробуйте это Mage :: getModel ('продажи / наблюдатель') -> cleanExpiredQuotes ();

Это уже функция расписания cron.Перейдите в Система -> Конфигурация -> Продажи -> Оформить заказ -> Настройки корзины покупок и установите «Срок службы котировок (дней)» в соответствии с вашими требованиями.

Это удалит уже обработанные записи корзины заказов.Чтобы удалить все записи корзины (обработано / необработано) Просто переопределите вышеуказанную функцию наблюдателя и

замените $ quotes-> addFieldToFilter ('is_active', 0);

на

$ quotes-> addFieldToFilter ('is_active', array (1,0));

Надеюсь, это поможет!

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