Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source...

45
Magento Entwickler Schulung Simon Sprankel http://www.coderblog.de 10. Juli 2011 – zuletzt aktualisiert am 08.04.2012

Transcript of Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source...

Page 1: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Magento Entwickler SchulungSimon Sprankel

http://www.coderblog.de

10. Juli 2011 – zuletzt aktualisiert am 08.04.2012

Page 2: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Inhaltsverzeichnis

Einfuhrung

Designs erstellen und bearbeiten

Module schreiben

Magento Resourcen

Page 3: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Magento - was ist das eigentlich?

I DIE Open Source Shop SoftwareI wurde im Juni 2011 von ebay fur 180 Millionen Dollar (ca.

126 Millionen Euro) gekauftI 45 Angestellte 2007 → ca. 375+ Angestellte 2012I mehr als 4000 ExtensionsI mehr als 4 Millionen Downloads

Page 4: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Was bringt EUCH das eigentlich?

I Magento kennenlernenI Magento (ansatzweise) verstehenI eine extrem gute Software-Architektur kennenlernenI Geld verdienen konnen (es gibt viel zu wenig Magento

Entwickler!)

Wer in Magento einigermaßen fit ist, braucht sich uber Nebenjobskeine Gedanken mehr zu machen . . .

Page 5: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Was bringt MIR das eigentlich?

Meine Freundin hat mich fast gesteinigt, als ich ihr gesagt habe,dass ich fur die Schulung nichts bekomme, aber . . .

I Spaß :-)I ErfahrungI Arbeitsentlastung! Wetten, ich kann euch in Magento

Projekte integrieren? :-)

Page 6: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Fragestunde

I Wer kann HTML?I Wer kann CSS?I Wer kann PHP?I Wer kann Java? Okay, dann konnt ihr auch PHP :-)

Page 7: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Entwicklungsumgebung

Hat jeder die Magento-VM 1 installiert oder ein vergleichbaresSystem aufgesetzt? Wir brauchen:

I Linux mit konfiguriertem Apache / PHP / MySqlI Magento Testinstallation inklusive BeispieldatenI Netbeans (!), PhpStorm, Eclipse PDT, AptanaI Firefox inklusive Firebug 2 (auch fur die Magento-VM Leute!)

Wer hat schon mit Firebug gearbeitet?

1http://www.magento-vm.de2https://addons.mozilla.org/de/firefox/addon/firebug/

Page 8: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Verzeichnisstruktur

Page 9: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeiten

I Wo findet man was?I Interfaces und ThemesI Theme FallbackI Wie mache ich denn jetzt ein eigenes Theme?I Learning by doing (!)

Page 10: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenWo findet man was?

I offentlich zugangliche Dateien (CSS- und JavaScript-Dateien,Bilder) in skin/frontend

I alle anderen Dateien in app/design/frontend

Was sind denn “alle anderen Dateien”?

I XML-Dateien, die dieStruktur der Seite angeben(im layout Ordner)

I *.phtml-Dateien, dieeigentlichen Templates (imtemplate Ordner)

Abbildung: Typischer ThemeOrdner

Page 11: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenInterfaces (grun) und Themes (gelb)

I base/default: basic designI default/default: Ordner fur Designs von ExtensionsI default/MYTHEME: hier legt man sein eigenes Theme an

Page 12: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenTheme Fallback

Nach Theme Dateien wird in der folgenden Reihenfolge gesucht(sowohl im skin, als auch im app/design Ordner):

1. default/MYTHEME (muss im Backend eingestellt werden)2. default/default

3. base/default

Page 13: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenWie mache ich denn jetzt ein eigenes Theme?

I NICHT durch kopieren des base/default Themes!I Anlegen eines eigenen Themes innerhalb des default

InterfacesI fur Template Anderungen: Kopieren einzelner Dateien aus

dem base/default Theme in das eigene Theme undBearbeiten dieser Dateien

I fur Layout Anderungen: Anlegen und Bearbeiten der local.xml

Page 14: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenLayout Updates mit der local.xml

I Layout XML Dateien werden nach einander geladen undgemerged

I die local.xml Datei im layout Ordner wird als Letztes geladenI damit lassen sich also fast alle Layout Updates

bewerkstelligen!I Grundstruktur wie alle anderen Layout XML Dateien:

<?xml version="1.0"?><layout version="0.1.0">

<!-- Layout updates here --></layout>

Page 15: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenlocal.xml Beispiel: Blocke verschieben

Verschieben der Suche aus dem Header in die rechte Spalte:

...<default>

<reference name="header"><action method="unsetChild">

<name>topSearch</name></action>

</reference><reference name="right">

<action method="insert"><name>top.search</name>

</action></reference>

</default>...

Page 16: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenlocal.xml Beispiel: Komplettes Entfernen von Blocken

...<checkout_cart_index>

<remove name="checkout.cart.shipping" /></checkout_cart_index>...

Achtung: Durch ein remove werden die zugehorigen Klassen nichtmehr geladen und der Block kann auch nicht mittels insertwieder eingefugt werden. Man musste ihn dann neu definieren.

Page 17: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenlocal.xml Beispiel: Entfernen und Einfugen von JavaScript

...<default>

<reference name="head"><action method="addItem">

<type>skin_js</type><name>js/my_js.js</name>

</action><action method="removeItem">

<type>js</type><name>some_ext/jquery-1.4.2.js</name>

</action></reference>

</default>...

Page 19: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenTipps und Tricks

I unter System - Konfiguration auf Website-Ebene umschaltenund unter Entwickleroptionen - Debug die Pfadhinweiseeinschalten

I mit Firebug z. B. einen Klassennamen suchen und in Dateienunter app/design/frontend/default danach suchen (z. B.mit grep -R classname /var/www/shop/*)

Page 20: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Designs erstellen und bearbeitenLearning by doing

1. lege ein eigenes Theme an2. entferne das PayPal Logo in der rechten Spalte3. entferne den Back-to-school-Banner in der rechten Spalte4. entferne den “Help Us to Keep Magento Healthy” Hinweis

ganz unten5. andere die Hintergrundfarbe jedes zweiten Produkts in der

Kategorieansicht in eine Farbe deiner Wahl6. fuge ein Block in der rechten Spalte (auf der Kategorie- und

Produktseite) ganz oben ein, der einigermaßen schon anzeigt,dass der Shop ab einem Bestellwert von 100 Euroversandkostenfrei liefert (Blocktyp: core/template)

Page 21: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreiben

I Was ist ein Modul?I CodepoolsI Von der URL zum ControllerI Woraus besteht ein Modul?I Module anpassenI Eigene Elemente schreibenI . . .

Page 22: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenWas ist ein Modul?

I Sammlung von Funktionalitat mit dem gleichen Thema, z. B.I Mage CatalogI Mage CheckoutI Mage CmsI Mage SalesI Spranks EasylogI . . .

Page 23: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenCodepools

Wie wird nach einem Modul / einer Datei gesucht?Ahnlich zum Theme Fallback . . .

1. app/code/local

2. app/code/community

3. app/code/core

4. lib

Page 24: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenVon der URL zum Controller

I frontname/actionname/method wird gemapped aufCompany Modul ActionnameController#methodAction(),die sich in app/code/[codepool]/Company/Modul/controllers/ActionnameController befindet

I der [codepool] wird dynamisch durch dieCodepool-Hierarchie bestimmt, Company und Modul sindbekannt aus XML-Konfiguration

I Parameter konnen angehangt werden mit/key1/value1/key2/value2

I catalog/product/view/id/6720?I Mage Catalog ProductController#viewAction() mit

Parameter id = 6720

Page 25: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenWoraus besteht ein Modul? 1/5

Page 26: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenWoraus besteht ein Modul? 2/5

I app/etc/modules/Company Module.xml meldet Modul inSystem an 3

<?xml version="1.0"?><config>

<modules><Company_Module>

<active>true</active><codePool>local</codePool><depends>

<Company2_Module/></depends>

</Company_Module></modules>

</config>3kann man unter System - Konfiguration - Erweitert - Modulausgaben

deaktivieren prufen!

Page 27: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenWoraus besteht ein Modul? 3/5

I Blocks: Block-Klassen, die in den layout XML-Files verwendetwerden konnen - fur Anzeige verantwortlich

I Controller: Klassen, die auf Aufrufe bestimmter URLsreagieren

I XML Files (Verzeichnis etc): Definieren das Modul(config.xml) und ggf. Einstellungen im Admin-Bereich(system.xml) oder Berechtigungen im Admin-Bereich(adminhtml.xml)

Page 28: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenWoraus besteht ein Modul? 4/5Eine minimale Company/Module/etc/config.xml

Das wichtigste File eines Moduls! Hier wird ALLES definiert. XMLCode auf den folgenden Folien wird immer hier eingefugt.Magento ist ein konfigurationsbasiertes MVC System!

<?xml version="1.0"?><config>

<modules><Company_Module>

<version>0.1.0</version></Company_Module>

</modules></config>

Page 29: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenWoraus besteht ein Modul? 5/5

I Helper: Weiß eigentlich auch keiner so Recht... Passtnirgendwo hin? Hier rein. Wenn Magento meckert, legt manhalt einen an.

I Models: Klassen, die die eigentliche Arbeit verrichten und aufDaten zugreifen und sie verandern

I sql Verzeichnis: Skripte, um Datenbank anpassen zu konnenI ggf. Layout Dateien in

app/design/frontend/default/default bzw.app/design/adminhtml/default/default

Page 30: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenModule anpassen

Wie kann ich ein bestehendes Modul verandern?I Schlechteste Losung: Kopieren des Moduls / der

entsprechenden Datei in hoheren CodepoolI Bessere Losung: Models/Blocks/Helper/Controller

umschreibenI Beste Losung: Event-Observer-Pattern anwenden (nicht

immer moglich)

Page 31: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module anpassenKopieren von Modulen / Dateien

I schlechteste LosungI Kopieren von z. B.

app/code/core/Mage/Catalog/Product.php nachapp/code/local/Mage/Catalog/Product.php

I Konsequenz: app/code/core/Mage/Catalog/Product.phpwird nicht mehr benutzt

I wenn diese Datei geupdated wird, gibt es Probleme . . .I schwer wartbar, da keiner durchblickt, was eigentlich

angepasst wurde

Page 32: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module anpassenModels/Blocks/Helper/Controller umschreiben

I bessere LosungI Uberschreiben der gesamten Klasse und Anpassen einzelner

Methoden durch Uberschreiben

I Codeausschnitte der nachsten Folien sind aus dem DeveloperCheatsheet vom “Extension Papst” Vinai Kopp

I dass man den Code nicht kopieren kann, ist so gewollt - sowasmuss man ein paar Mal selbst geschrieben haben :-)

Page 33: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module anpassenRewrite von Models / Blocks / Helpern

Uberschreiben der gesamten Klasse und Anpassen einzelnerMethoden durch Uberschreiben

Page 34: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module anpassenRewrite von Controllern

Page 35: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module anpassenEvent-Observer 1/2

Wer kennt das Event-Observer-Pattern?I Events: werden ausgelost, wenn irgend etwas passiert, z. B.

checkout cart product add afterI Observer: werden benachrichtigt, wenn ein Event eintrittI Klassen konnen sich als Observer fur bestimmte Events

eintragen

Page 36: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module anpassenEvent-Observer 2/2

Page 37: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenEigene Elemente schreiben

Wie schreibe ich ein eigenes Modul?I app/etc/modules/Company Module.xml anlegenI app/code/[codepool]/Company/Module/etc/config.xml

anlegenI Beliebige Funktionalitat implementieren (in config.xml

definieren!)

Page 38: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenModel / Block / Helper definieren

Page 39: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenController definieren

Page 40: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenProblem: Zwei Module uberschreiben die selbe Klasse

Beispiel: Die Klasse MyCompany Module Model Class und dieKlasse OtherCompany Module Model Class uberschreiben beidedie Klasse Mage Module Model Class.

1. Losung: <depends><OtherCompany Module/></depends> inapp/etc/modules/MyCompany Module.xml einfugen

2. Losung:2.1 Entfernen des Klassen Rewrites in

MyCompany/Module/etc/config.xml2.2 Klassen Definition von MyCompany Module Model Class

andernalt: MyCompany Module Model Class extendsMage Module Model Classneu: MyCompany Module Model Class extendsOtherCompany Module Model Class

Hier ist das Modul MDN ExtensionConflict außerst hilfreich...

Page 41: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenTipps und Tricks

I Model instanziieren:Mage::getModel(’catalog/product’);

I @var Statement fur Auto-Vervollstandigung:/* @var $product Mage Catalog Product */

I Logeintrag in einer Datei in var/log erzeugen:Mage::log(’Logentry’, null, ’logfile.log’);

Page 42: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Module schreibenLearning by doing

I Selber ein Modul schreiben, welches bei Aufruf der URLhttp://wwww.shop.de/schulung/special/machwas einenLogeintrag erstellt

I Gemeinsam Modul fur Newsletter Subscription schreiben: Userkann irgendwo auf Seite Daten eingeben fur Newsletter,Adresse wird an Shopbetreiber gemailt

I Gemeinsam Modul schreiben: Neuer Tab im Admin-Bereich“Schulung”, in dem irgendwas angezeigt wird

I Bestehende Module zusammen anschauen

Viel Erfolg . . .

Page 43: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Magento Resourcen 1/2

I Magento Commerce http://www.magentocommerce.comI Forum http://www.magentocommerce.com/boardsI Knowledge Base

http://www.magentocommerce.com/knowledge-baseI Wiki http://www.magentocommerce.com/wikiI PHP Docs http://docs.magentocommerce.com/I Answers

http://www.magentocommerce.com/answers/get-startedI IRC Chat: auf chat.freenode.net #magento-de

I Magento Design Guide http://info.magento.com/rs/magentocommerce/images/MagentoDesignGuide.pdf

I Modulentwicklung (Magento for PHP MVC Developers)http://alanstorm.com/category/magento /http://t3n.de/magazin/workshop-module-open-source-shop-system-programmieren-223070/

Page 44: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Magento Resourcen 2/2

I Magento Cheatsheetshttp://devcheatsheet.com/tag/magento (hier vor allemder “Magento Developer Cheatsheet” vom “Extension-Papst”Vinai Kopp :-) )

I Magento Podcast http://magentopodcast.deI Magento Expert http://magentoexpert.comI Stackoverflow

http://stackoverflow.com/questions/tagged/magentoI http://www.coderblog.de :-)I Tausende Magento Blogs

Page 45: Magento Entwickler Schulung - Simon Sprankel · Magento - was ist das eigentlich? I DIE Open Source Shop Software I wurde im Juni 2011 von ebay f¨ur 180 Millionen Dollar (ca. 126

Fragen?

Vielen Dank fur eure Aufmerksamkeit!