Lernen der Magento Plugin-Entwicklung

30

Ich bin seit über 13 Jahren PHP-Entwickler und verfüge über umfangreiche PHP-Kenntnisse, solange ich noch andere beliebte Projekte wie WordPress betreibe. Ich habe keine Erfahrung mit Magento.

Ich habe jetzt eine Vollzeitbeschäftigung bei einem Unternehmen, das Magento verwendet. Meine gesamte Entwicklungsarbeit wird jetzt so ziemlich auf Magento konzentriert sein.

Meine ersten Gedanken nach dem ersten Blick auf Magento sind: Wow, worauf habe ich mich jetzt eingelassen? Aber dann kommt der erfahrene Entwickler in mir heraus und erinnert sich, es ist nur PHP.

Ich habe also einige grundlegende Fragen zu Magento. Ich würde mich sehr über Antworten von erfahrenen Magento-Entwicklern freuen.

  1. Was ist neben dieser Site der beste Ort, um mehr über die Entwicklung von Magento zu erfahren?
  2. Erweiterungen / Plugins sind für mich bisher sehr verwirrend. Auf anderen Plattformen wie WordPress können Sie ein Plugin in einem eigenen Ordner ablegen, und alle darin enthaltenen Dateien werden in diesem Ordner gespeichert. Nach dem, was ich bisher gesehen habe, könnte ein Plugin auf mehrere Ordner in Magento verteilt sein. Ist das richtig?
  3. Ich habe gelernt, wie man die Kernfunktionalität außer Kraft setzt. Wenn sich hier also eine Datei im Core befindet, /app/code/core/Mage/SitemapModel/Resource/Catalogkann ich sie überschreiben, indem ich die Datei an diesem Speicherort erstelle. /app/code/local/Mage/SitemapModel/Resource/CatalogWie funktioniert das mit einer Erweiterung / einem Plugin? Wenn ich ein Plugin erstelle, das die Kernfunktionalität überschreiben muss, muss ich meine Dateien überall haben, damit diese Erweiterung funktioniert?
  4. Haben Sie weitere Informationen, von denen Sie sich wünschen, dass Sie sie bereits mit Magento kennen?

Vielen Dank für jede Einsicht, ich weiß, dass dies eine mehrteilige Frage ist, aber ich denke, dass jede der Antworten für mich und andere hilfreich wäre. Ich werde dieses öffentliche Wiki veröffentlichen, wenn ich muss.

JasonDavis
quelle
1
Wenn es so etwas wie einen Sticky-on-Stack-Austausch geben würde, wäre dies eine Frage und Antwort! Aus was für einer Ressource hat sich das entwickelt :)
McNab
@McNab Es gibt kein Sticky-Feature, jedoch werden Fragen, die die meisten Stimmen haben, im Allgemeinen höher eingestuft und öfter gesehen. Auch auf dieser Seite unter magento.stackexchange.com/?tab=month wird diese Frage derzeit als Nummer 2 angezeigt. Das ist also eine Art Sticky, aber es steht auf "Month", daher bin ich nicht sicher, wie lange sie ihre Klebrigkeit beibehält. Ich bin damit einverstanden, dass sich eine großartige Ressource entwickelt hat, und ich habe sie für den künftigen einfachen Zugriff favorisiert und markiert. Übrigens, bitte teile diese Community mit deinen Freunden, damit sie ein dauerhaftes Zuhause wird und nicht nach der Beta-Phase
stirbt

Antworten:

24

Ich werde mich auf den ersten Teil Ihrer Frage konzentrieren: " Wie lerne ich / wo fange ich an ? "

Als ehemaliger Zend Framework-Entwickler war die größte Hilfe für mich bei der Entwicklung von Magento die Explosion des Online-Lernens, die Magento U in den letzten zwei Jahren gebracht hat. Abgesehen vom formalen Lernen lerne ich hauptsächlich durch das Tun und mache seit über 5 Jahren Magento.

Einige konkrete Lernressourcen:

Abgesehen von Lernwerkzeugen bestand das größte Lernwerkzeug für mich darin, Magento-Module von Drittanbietern zu untersuchen. Ich lese den Code gründlich und lerne daraus. Sie können dasselbe tun, indem Sie von den Core-Modulen lernen.

Einige Websites, die Ihnen auf Ihrer Lernreise hilfreich sein werden:

http://magento-quickies.tumblr.com/

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Einige epische Entwickler, denen Sie folgen sollten:

Alistair Stead: https://github.com/alistairstead

Fabrizio Branca: https://github.com/fbrnc/

Vinai Kopp: https://github.com/Vinai

Engagieren Sie sich sozial - lernen Sie einige der 'Rockstar'-Entwickler kennen und folgen Sie ihnen auf Twitter. Wenden Sie sich an bestimmte Personen, wenn Sie Hilfe benötigen. Diese Community ist unglaublich zugänglich. Nutzen Sie die Community zu Ihrem Vorteil.

Einige Twitter-Listen:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

https://twitter.com/eHubSystem/magento-imagine-2013

https://twitter.com/GingerWarriorX/magento-peeps

Schließlich - machen Sie den Trek nächstes Jahr zu Magento Imagine nächstes Jahr und drücken Sie das Fleisch. Spüren Sie uns auf, stellen Sie uns Fragen. Gehen Sie zu Ihren lokalen Meetups. Wenn es in Ihrer Nähe kein Meetup gibt, starten Sie eines . Hartnäckig sein. Lassen Sie sich nicht von Ihrem Mangel an Wissen davon abhalten, sich zu vernetzen und Leute zu treffen. Ihre Beziehungen in der Gemeinschaft werden sich in Dividenden auszahlen.

Philwinkle
quelle
14

Meine 2 Cent an brilliant @ philwinkle's Antwort.

Es gibt zwei offizielle PDFs

1) Magento Extension Entwicklerhandbuch

80 Seiten, auf denen Schritt für Schritt erklärt wird, wie Sie eine benutzerdefinierte Erweiterung von Grund auf neu erstellen. Das Modul "News" wurde von Grund auf neu entwickelt - es zeigt die Struktur der Dateien und Ordner des Moduls, Konfigurationsdateien, Controller, Modelle und Blöcke.

2) Designer's Guide für Magento finden Sie hier http://www.magentocommerce.com/resources/magento-user-guide

60 Seiten zum Organisieren und Erstellen eigener Themen, Pakete nach bewährten Methoden.

Es gibt auch ein neues Buch speziell für diejenigen, die PHP-Hintergrund haben und mit Magento beginnen - Magento PHP Developer's Guide von Allan McGregor. Es enthält sehr gute Rezensionen von Magento-Entwicklern auf Amazon und verschiedenen Blogs

Videokanäle: Magento Commerce YouTube-Kanal

Treffen Sie Videos zu Magento-Konferenzen

Andere gute Blogs:

http://magebase.com/
http://inchoo.net/blog/
http://www.kingletas.com/
http://blog.belvg.com/category/magento-news/developer-certification http: / /fbrnc.net/tag:Magento
http://www.demacmedia.com/category/magento-commerce/

Sergei Guk
quelle
1
Das ist großartig - großartige Ressourcen!
Philwinkle
8

Großartige Antworten hier bisher. Bezüglich

Erweiterungen / Plugins sind für mich bisher sehr verwirrend. Auf anderen Plattformen wie WordPress können Sie ein Plugin in einem eigenen Ordner ablegen, und alle darin enthaltenen Dateien werden in diesem Ordner gespeichert. Nach dem, was ich bisher gesehen habe, könnte ein Plugin in Magento über mehrere Ordner verstreut sein. Ist das richtig?

Die Terminologie in Magento wird etwas verwirrend. Die frühe Entwicklung der Plattform war rücksichtslos schnell und es gibt viele Male, bei denen sich überlappende Konzepte aufgrund von Fehlstarts und Richtungsänderungen auftreten. Erweiterungen / Plugins / Module / Ich bin ein Entwickler und möchte meinen Code zum System hinzufügen.

Eine Magento Connect-Erweiterung ist einfach ein Paket von Dateien, die auf einem Magento-System installiert werden können. Es ist vollständig von allen anderen programmatischen Subsystemen von Magento entkoppelt.

Näher an dem, was Sie gewohnt sind, sind Magento-Codemodule . Grob gesagt ist ein Codemodul eine Sammlung von PHP-Dateien, die Magento als eine Einheit ansieht. Die Module befinden sich in einem von drei Ordnern

app/code/core
app/code/community
app/code/local

Wenn Sie Magento anpassen oder neue Funktionen hinzufügen möchten, beginnen Sie fast immer mit einem Codemodul. Tatsächlich basiert Magento selbst auf rund 60 - 70 Codemodulen. Zum Beispiel das Mage_CmsModul in

app/code/core/Mage/Cms

Enthält den Code, mit dem die CMS-Funktionen von Magento funktionieren. Wenn Sie ein Modul erstellen möchten, mit dem KittyCats zu Magento hinzugefügt wurden, können Sie ein Modul mit dem Namen erstellen Jasondavis_Kittiesund in dieses einfügen

app/code/community/Jasondavis/Kitties

Re: core, communityund local- die erste für Magento - Entwickler ist, berühren so nicht. Die zweite ist für Erweiterungen gedacht, die an die Community verteilt werden sollen. Die letzte ist für Erweiterungen gedacht, die lokal für ein bestimmtes System entwickelt werden sollen.

Die letzte Verwirrung betrifft Designpakete . Der Code, mit dem Magento HTML rendert und verwaltet, ist ein völlig separates System. Aus diesem Grund phtmlbefinden sich Dateien getrennt von Codemoduldateien . Sie finden diese Dateien im

app/design

Mappe.

Am besten geschriebene professionelle Erweiterungen werden als Magento Connect-Erweiterungen vertrieben, die ein oder mehrere Magento-Codemodule installieren und eine Reihe von benutzerdefinierten phtmlVorlagen und Layout-XML-Dateien enthalten, die im base Design-Paket installiert sind .

Die spezifischen Dinge, die Sie mit Codemodulen tun können, sind unzählig, und mehr als eine Stack Exchange-Antwort kann dies abdecken. Ich habe eine Reihe von Artikeln geschrieben , die, obwohl ein wenig veraltet, immer noch eine solide Einführung in die Codierungskonzepte von Magento darstellen.

Schließlich Re:

Haben Sie weitere Informationen, von denen Sie sich wünschen, dass Sie sie bereits mit Magento kennen?

Ich bin ein bisschen voreingenommen, aber ich verkaufe eine Magento-Debug-Erweiterung namens Commerce Bug (klicke auf den kleinen Debug-Link). Dadurch werden alle Informationen gesammelt und angezeigt, die ein Entwickler für die Arbeit mit Magento benötigt. Es ist eine große Hilfe beim Erlernen des Systems (ich habe es so aufgebaut, dass ich das System in der Vergangenheit besser kennenlernen kann) und bleibt hilfreich, wenn Sie täglich an einem Magento-System arbeiten. Wenn Sie Ihre Arbeit stündlich abrechnen, erhalten Sie den Kaufpreis für Ihr erstes Projekt zurück.

Alan Storm
quelle
7

Zusätzlich zur Antwort von @ philwinkle möchte ich auf Ihre Aussage zum Überschreiben von Klassen mit der PHP-Include-Pfadpriorität antworten.

Betrachten Sie dies als eine Notfalllösung, wenn es keinen anderen Weg gibt, das zu erreichen, was Sie wollen. Häufig können Sie die zu verwendende Klasse über eine XML-Konfigurationseinstellung oder über ein Umschreiben der Klasse angeben (auch in der XML-Konfiguration angegeben).
Die Nachteile des Include-Pfad-Hack sind:

  • Funktioniert nicht für Controller
  • Funktioniert nur für PHP-Klassen (zum Beispiel config.xml- Dateien)
  • Sie müssen Änderungen in Ihre lokalen Kopien einbinden, wenn Sie Magento aktualisieren
  • Das Debuggen ist verwirrend, da die meisten Magento-Entwickler einfach davon ausgehen, dass Module aus dem Mage-Namespace im Kerncode-Pool vorhanden sind.
Vinai
quelle
1
Absolut korrekt. Ich war mir nicht sicher, wie ich das ohne eine separate Antwort anstellen sollte.
Philwinkle
Ich denke, es war eine gute Idee, es getrennt zu halten.
Vinai
Gut zu wissen, ich wusste, dass es nicht "richtig" aussah, aber ich war mir nicht sicher, ob es einen anderen Weg gab, also musste ich noch viel lernen, danke
JasonDavis
4

Zuallererst sollten Sie nicht daran denken, Kernmodule oder Klassen neu zu schreiben oder zu erweitern. Sie müssen die Magento-Architektur erlernen, ein eigenes Testmodul / eine eigene Erweiterung mit wenig Funktionalität schreiben, die Magento, EAV-Konzepte, Layouthierarchie, Magento-Thema und Designfluss nicht bereinigt. Ich verweise auf diesen Link: Moderne Magento 1.X Workflow- und Entwicklungstools . Viel Glück

mageUz
quelle