【问题标题】:Magento remove items from cart at loggin outMagento 在注销时从购物车中删除物品
【发布时间】:2016-06-13 02:09:04
【问题描述】:

我想在用户注销后清除或删除购物车中的所有商品。 我找到了这个,但我不知道我必须把它准确地放在哪里

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

【问题讨论】:

    标签: magento magento-1.9


    【解决方案1】:

    您需要为“customer_logout”事件创建一个观察者。

    Answer here describe how to create observer

    您只需要使用“customer_logout”而不是“catalog_product_save_before”。

    【讨论】:

    • 它不起作用!我这样做了,但当我点击断开连接时,他从不清空我的购物车
    • 在您发布的 config.xml 中尝试将 amir_meta/observer 更改为 Amir_Meta_Model_Observer
    • 不,我认为 xml 很好,我更改了观察者,现在它可以工作了。谢谢!我会更正我的帖子
    【解决方案2】:

    现在可以了

    app/etc/modules/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>
    

    app/code/local/Amir/Meta/etc/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>
    

    app/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();
    
            }
    
        }
    
    }
    

    【讨论】:

      【解决方案3】:

      下面的代码对我来说很好用:

      在 /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();
      
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多