Magento Extension Event-Observer / Warenkorb nach Login löschen oder nach Logout

Gepostet am Oktober 25, 2012

Im Magento wird der Warenkorb nach dem Logout einen Benutzers gespeichert, beim erneuten Login ist dieser wieder vorhanden. Im Backend von Magento kann man die „Lebenszeit (in Tagen) angeben“, setzt man diese auf 0 wird der Warenkorb trotz der Einstellung gespeichert. Folgende Extension löscht den Warenkorb nach dem Login. Das ganze war für mich eine Spezialanpassung und natürlich macht es auch Sinn, den Warenkorb nach dem Logout und nicht nach dem Login zu löschen. Dazu muss in der „config.xml“ einfach der Tag „<customer_login>“ durch „<customer_logout>“ ersetzt werden und schon wird die Funktion nur beim Ausloggen ausgeführt.

Einstellen der „Lebenszeit (in Tagen) angeben“

1
System -> Konfiguration -> Verkäufe -> Zur Kasse -> Warenkorb -> Lebenszeit (in Tagen) angeben

Extension erstellen

Erstellen Sie folgende Ordnerstruktur:

1
2
3
4
5
6
7
8
/* Verzeichnisse anlegen: */
app/code/local/Mswiki/Clearcartafterlogin/etc
app/code/local/Mswiki/Clearcartafterlogin/Model
 
/* Dateien anlegen: */
app/etc/Mswiki_ClearCartAfterLogin.xml
app/code/local/Mswiki/Clearcartafterlogin/etc/config.xml
app/code/local/Mswiki/Clearcartafterlogin/Model/Observer.php

Extension initialisieren

Um die Erweiterung bei Magento bekannt zu machen muss folgende Datei erstellt werden (Der Name der Datei ist hier beliebig wählbar):

1
app/etc/Mswiki_ClearCartAfterLogin.xml

Inhalt:

1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
<config>
    <modules>
        <Mswiki_Clearcartafterlogin>
            <active>true</active>
            <codePool>local</codePool>
        </Mswiki_Clearcartafterlogin>
    </modules>
</config>

Konfigurationsdatei anlegen

Für jede Extension muss eine Konfigurationsdatei erstellt werden, diese enthält die Version der Extension und alle Strukturen der Extension.

1
app/code/local/Mswiki/Clearcartafterlogin/etc/config.xml

Inhalt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="UTF-8"?>
<config>
  <modules>
    <Mswiki_Clearcartafterlogin>
        <version>1.0.0</version>
    </Mswiki_Clearcartafterlogin>
  </modules>
  <global>
    <models>
      <clearcartafterlogin>
        <class>Mswiki_Clearcartafterlogin_Model</class>
      </clearcartafterlogin>
    </models>
  </global>
  <frontend>
    <events>
      <customer_login>
        <observers>
          <beliebige_bezeichnung>
            <type>singleton</type>
            <class>clearcartafterlogin/observer</class>
            <method>clear_cart</method>
          </beliebige_bezeichnung>
        </observers>
      </customer_login>
    </events>
  </frontend>
</config>

Event Observer erstellen

Für jede Extension muss eine Konfigurationsdatei erstellt werden, diese enthält die Version der Extension und alle Strukturen der Extension.

1
app/code/local/Mswiki/Clearcartafterlogin/Model/Observer.php

Inhalt:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Mswiki_Clearcartafterlogin_Model_Observer extends Mage_Core_Model_Abstract {
 
    public function __construct() {  }
 
    public function clear_cart($observer) {
        foreach( Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection() as $item ) {
	    Mage::getSingleton('checkout/cart')->removeItem( $item->getId() )->save();
	}
    }
 
}
?>

Tags: ,

Leave a Reply

 

Posts of Current Category



Facebook: