• Modul Erstellung für den OXID eShop

    von am 4. Dezember 2009

    Dies ist ein Gastbeitrag von Peter Rother.

    Wie vielleicht schon einige mitbekommen haben, ist der kommerzielle eShop von OXID seit nun mehr als einem Jahr auch in einer Open Source Variante (unter der GPL) verfügbar. Für all diejenigen, die sich bisher nur mit Magento beschäftigt haben, möchte ich mit dieser kurzen Einführung einmal zeigen, wie einfach der OXID Shop durch seine eingebaute Modul Logik zu erweitern ist.

    Im Shop können bis auf wenige Ausnahmen alle Klasse durch eigene Erweiterungen überladen werden, ohne das in den Quellcode des Shops eingegriffen werden muss. Der Vorteil hierbei ist selbstverständlich, dass die Update Fähigkeit hierdurch in keiner Weise eingeschränkt wird.
    Die Anwendung arbeitet hierbei mit einem ausgeklügelten System zum Chaining von Modulen. Die Module werden dabei „on the fly“ im Shop in die Vererbungskette eingebunden, wodurch sich auch mehrere Module, die ein und dieselbe Klasse überladen, nicht in die Wege kommen.

    Ein typischer Eintrag im Backend könnte z.B. folgend aussehen:
    oxarticle => myModul/increaseMyArticlePrice

    Weitere Erweiterungen werden mit dem & Zeichen an den Moduleintrag gekoppelt:
    oxarticle => myModul/increaseMyArticlePrice&myOtherModul/doesSomeGreatStuff

    Die Module erweitern in diesem Fall beide die Klasse oxarticle, ohne von einander zu wissen und ohne in den Shop eigenen Quellcode eingreifen zu müssen.

    Zeit für ein bisschen Magie
    Wie bereits angesprochen verwendet der Shop bei der Klassen Erweiterung eine Methode, um während der Laufzeit eine Vererbungs Hierarchie zu erstellen. Zu beachten sei hierbei, dass als erstes immer das letzte Modul aus der Kette der Moduleinträge angesprochen wird und die weiteren Module von rechts nach links folgen. Es sollte außerdem beachtet werden, immer den parent Aufruf einer zu überladenen Methode aufzurufen, damit wir nicht andere Module, die die gleiche Methode überlagern, ausgrenzen.

    Ein kleine Klasse, die in diesem Fall einfach nur den Artikelpreis um 10% erhöht, könnte damit folgendermaßen implementiert werden:

    class increaseMyArticlePrice extends  increaseMyArticlePrice_parent
    {
      public function getBasePrice( $dAmount = 1 )
      {
        $dPrice = parent::getBasePrice( $dAmount );
        return $dPrice * 0.10;
      }
    }

    Das Modul bekommt hier den vom Shop generierten Preis durch den parent Aufruf und wir rechnen noch einmal 10% hinzu. Das ist jetzt mit Sicherheit kein Parade Beispiel, es soll auch nur zeigen wie einfach man den Shop um eigene Module erweitern kann. Was dem aufmerksamen Leser hier bestimmt auffällt ist, dass wir von einer nicht vorhandenen Klasse Namens increaseMyArticlePrice_parent erben. Intern wird hierüber die Vererbung zu anderen Modulen und der eigentlich zu erweiternden Shop Klasse erstellt.

    Das war es auch schon zu unserer kleinen Einführung in die Modul Erstellung für den OXID eShop. Alle die einmal über den Magento ( oder andere Shopsysteme ) Tellerrand schauen möchten, möchte ich noch ein Paar weiter führende Links mitgeben.

    Download der Open Source Version:
    http://www.oxid-esales.com/de/download/open-source-software-oxid-eshop-community-edition
    Oxidforge:
    http://www.oxidforge.org/wiki/Main_Page
    Forum:
    http://www.oxid-esales.com/forum/
    Developer Mailing List:
    http://www.oxidforge.org/wiki/Mailinglists

    2 Kommentare »


    • Matthias Zeis
      am 7. Dezember 2009 um 07:07 Uhr

      Danke für die kurze Einführung. Ich würde mich freuen, in Zukunft mehr über OXID eShop zu lesen, zum Beispiel über Vor- und Nachteile gegenüber anderen Shop-Systemen in den üblichen Problembereichen Geschwindigkeit, Import-/Export-Schnittstellen etc.

      PS: werden bei deiner Berechnung nicht 10 statt 110 Prozent des Artikelpreises zurückgegeben?


    • Peter Rother
      am 7. Dezember 2009 um 12:59 Uhr

      @Matthias, ich kann ja mal gucken ob ich mit Damian eine kleine Gegenüberstellung zu OXID und Magento hinbekomme. Die Nachteile die jede Software mitbringt, sollen natürlich nicht verschwiegen werden.

      Du hast übrigens Recht, bei dem Beispiel werden nur 10% anstatt 110% zurück gegeben. Vielleicht kann Nils das einmal anpassen.

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.