2015-10-22 2 views
0

Я хочу удалить или удалить все предметы из корзины после выхода из системы. я нашел это, но я не знаю, где я должен поставить его именноMagento удаляет предметы из корзины при loggin out

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

ответ

0

Сейчас он работает

приложение/и т.д./модули/Amir_Meta.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Amir_Meta> 
      <codePool>local</codePool> 
      <active>true</active> 
      <depends> 
       <Mage_Catalog /> 
      </depends> 
     </Amir_Meta> 
    </modules> 
</config> 

приложение/код/​​местные/Amir/Meta/и т.д./config.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Amir_Meta> 
      <version>0.0.1</version> 
     </Amir_Meta> 
    </modules> 
    <global> 
     <models> 
      <amir_meta> 
       <class>Amir_Meta/Observer</class> 
      </amir_meta> 
     </models> 
    </global> 
    <adminhtml> 
     <events> 
      <customer_logout><!-- event observer --> 
       <observers> 
        <amir_meta> 
         <class>amir_meta/observer</class> 
         <method>Clean_cart</method> 
        </amir_meta> 
       </observers> 
      </customer_logout> 
     </events> 
    </adminhtml> 
</config> 

приложение /code/local/Amir/Meta/Model/Observer.php

 <?php 

class Amir_Meta_Model_Observer { 

public function Clean_cart(Varient_Event_Observer $observer) { 

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

     } 

    } 

} 
0

Вы должны создать для наблюдателя «customer_logout» событие.

Answer here describe how to create observer

Вам просто нужно использовать "customer_logout" вместо "catalog_product_save_before".

+0

это не работает! Я сделал это, но он никогда не опустошить мою тележку, когда я отключаю, когда я нажимаю на разъединение – Miroo

+0

В config.xml вы публикуемую попробуйте изменить amir_meta/наблюдатель к Amir_Meta_Model_Observer

+0

Нет, я думаю, что XML-хорошо, я изменил наблюдатель и теперь это работает. Спасибо! Я исправлю сообщение – Miroo

0

Ниже код работает отлично для меня:

в /app/etc/modules/Mycompany_Cleancart.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
    <Mycompany_Cleancart> 
     <active>true</active> 
     <codePool>local</codePool> 
     <depends> 
      <Mage_Catalog /> 
     </depends> 
     <version>0.1.0</version> 
    </Mycompany_Cleancart> 
    </modules> 
</config> 

в /app/code/local/Mycompany/Cleancart/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <modules> 
     <Mycompany_Cleancart> 
      <version>0.1.0</version> 
     </Mycompany_Cleancart> 
    </modules> 
    <global> 
     <models> 
      <mycompany_cleancart> 
       <class>Mycompany_Cleancart_Model</class> 
      </mycompany_cleancart> 
     </models> 
    </global> 
    <frontend> 
     <events> 
      <customer_logout><!-- event observer --> 
       <observers> 
        <Mycompany_Cleancart> 
         <class>mycompany_cleancart/observer</class> 
         <method>cleancart</method> 
        </Mycompany_Cleancart> 
       </observers> 
      </customer_logout> 
     </events> 
    </frontend> 
</config> 

в /app/code/local/Mycompany/Cleancart/Model/Observer.php

<?php 

class Mycompany_Cleancart_Model_Observer { 

    public function cleancart(Varien_Event_Observer $observer){ 
     foreach(Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item){ 
      Mage::getSingleton('checkout/cart')->removeItem($item->getId())->save(); 

     } 
    } 
} 
Смежные вопросы