Apprendre le développement de plugins Magento


30

Je suis un développeur PHP depuis plus de 13 ans, j'ai une connaissance approfondie de PHP lui-même aussi longtemps que d'autres projets populaires comme WordPress. Je n'ai aucune expérience avec Magento.

J'ai maintenant un travail à plein temps pour une entreprise qui utilise Magento, tout mon travail de développement sera à peu près sur Magento maintenant.

Mes premières pensées après avoir regardé Magento pour la première fois sont: wow dans quoi je me suis embarqué maintenant? Mais alors le développeur expérimenté en moi sort et se souvient, c'est juste PHP.

J'ai donc quelques questions de base sur Magento auxquelles j'apprécierais vraiment des réponses de développeurs Magento plus expérimentés ...

  1. Quels sont les meilleurs endroits les plus utiles pour en savoir plus sur le développement de magento à côté de ce site?
  2. Les extensions / plugins sont pour moi très déroutants jusqu'à présent. D'autres plateformes comme WordPress vous permettent de placer un plugin dans son propre dossier et tous ses fichiers vivront sous ce dossier. D'après ce que j'ai vu jusqu'à présent, un plugin peut être dispersé dans plusieurs dossiers dans Magento, est-ce correct?
  3. J'ai appris à contourner la fonctionnalité Core. Donc, si un fichier dans le noyau se trouve ici, /app/code/core/Mage/SitemapModel/Resource/Catalogje peux le contourner en créant le fichier à cet emplacement, /app/code/local/Mage/SitemapModel/Resource/Catalogalors comment cela fonctionne-t-il avec une extension / un plugin? Si je crée un plugin qui doit remplacer les fonctionnalités de base, alors je dois avoir mes fichiers partout pour que cette extension fonctionne?
  4. Avez-vous d'autres informations que vous souhaiteriez connaître en commençant par magento?

Merci pour tout aperçu, je sais que c'est une question en plusieurs parties mais je pense que l'une des réponses serait utile pour moi et pour les autres, je ferai ce wiki public si je le dois aussi.


1
S'il y avait une telle chose comme un collant sur stackexchange alors ce Q&A en serait un! Quelle ressource cela est devenu :)
McNab

@McNab Il n'y a pas de fonctionnalité Sticky, mais la question qui a le plus de votes se classe généralement plus haut et se voit plus souvent. De plus, cette page magento.stackexchange.com/?tab=month affiche cette question en tant que numéro 2 en ce moment, ce qui est en quelque sorte un collant, mais il dit "mois", donc je ne sais pas combien de temps il conservera son caractère collant. Je suis d'accord que cela s'est transformé en une excellente ressource et je l'ai favorisé et bokmarké pour un accès facile à l'avenir. BTW s'il vous plaît partagez cette communauté avec vos amis afin qu'il devienne sûr de devenir un foyer permanent et de ne pas mourir après la période bêta
JasonDavis

Réponses:


24

Je vais me concentrer sur la première partie de votre question - " comment puis-je apprendre / par où commencer? "

En tant qu'ancien développeur de Zend Framework, la plus grande aide que j'ai apportée au développement de Magento a été l'explosion de l'apprentissage en ligne que Magento U a apportée au cours des 2 dernières années. Mis à part l'apprentissage formel - j'apprends surtout en faisant , et je "fais" Magento depuis plus de 5 ans maintenant.

Quelques ressources d'apprentissage concrètes:

Mis à part les outils d'apprentissage, pour moi, le plus grand outil d'apprentissage a été d'examiner les modules Magento tiers. J'ai lu le code à fond et j'en tire des leçons. Vous pouvez faire de même en apprenant des modules Core.

Quelques sites qui vous seront utiles dans votre parcours d'apprentissage:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Quelques développeurs épiques à suivre:

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

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

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

Impliquez-vous socialement - rencontrez certains des développeurs «rockstar» et commencez à les suivre sur Twitter. Contactez des personnes spécifiques lorsque vous avez besoin d'aide; cette communauté est incroyablement accessible. Utilisez la communauté à votre avantage.

Quelques listes Twitter:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

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

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

Enfin - faites le trek l'année prochaine à Magento Imaginez l'année prochaine et appuyez sur la chair. Retrouvez-nous, posez-nous des questions. Sortez à vos rencontres locales. S'il n'y a pas de rencontre dans votre région - commencez-en une . Être persistant. Ne laissez pas votre manque de connaissances vous empêcher de réseauter et de rencontrer des gens. Vos relations dans la communauté porteront leurs fruits.


14

Mes 2 cents à la réponse brillante de @ philwinkle.

Il y a deux PDF officiels

1) Guide du développeur d'extension Magento

80 pages sur la façon de créer une extension personnalisée à partir de zéro, étape par étape. Le module "News" est développé à partir de zéro - il vous montrera la structure des fichiers et des dossiers du module, les fichiers de configuration, les contrôleurs, les modèles, les blocs.

2) Le guide du concepteur de Magento peut être trouvé ici http://www.magentocommerce.com/resources/magento-user-guide

60 pages sur l'organisation et la création de vos propres thèmes, packages selon les meilleures pratiques.

Il y a aussi un nouveau livre spécialement pour ceux qui ont des antécédents en PHP et qui commencent avec Magento - Guide du développeur PHP Magento par Allan McGregor et il a de très bonnes critiques des développeurs Magento sur Amazon et divers blogs

Chaînes vidéo: chaîne YouTube Magento Commerce

Découvrez les vidéos des conférences Magento

Autres bons 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/


1
C'est génial - des ressources géniales!
philwinkle

8

Excellentes réponses jusqu'ici tout autour. En ce qui concerne

Les extensions / plugins sont pour moi très déroutants jusqu'à présent. D'autres plateformes comme WordPress vous permettent de placer un plugin dans son propre dossier et tous ses fichiers vivront sous ce dossier. D'après ce que j'ai vu jusqu'à présent, un plugin peut être dispersé dans plusieurs dossiers dans Magento, est-ce correct?

La terminologie dans Magento devient un peu confuse. Le développement précoce de la plateforme a été impitoyablement rapide et il y a de nombreuses fois où vous verrez des concepts qui se chevauchent à partir de faux départs et de changements de direction. Extensions / plugins / modules / Je suis un développeur et je veux ajouter mon code au système est l'un de ces domaines.

Une extension Magento Connect est simplement un ensemble de fichiers qui peuvent être installés dans un système Magento. Il est complètement découplé de tout autre sous-système de programmation de Magento.

Les modules de code Magento sont plus proches de ce à quoi vous êtes habitué . En gros, un module de code est une collection de fichiers PHP que Magento considère comme une seule unité. Les modules sont situés dans l'un des trois dossiers

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

Lorsque vous souhaitez personnaliser Magento ou ajouter de nouvelles fonctionnalités, vous commencerez presque toujours par un module de code. En fait, Magento lui-même est construit sur environ 60 à 70 modules de code. Par exemple, le Mage_Cmsmodule de

app/code/core/Mage/Cms

contient le code qui fait fonctionner les fonctionnalités CMS de Magento. Si vous deviez créer un module qui a ajouté des chats minou à Magento, vous pourriez créer un module nommé Jasondavis_Kittieset le placer dans

app/code/community/Jasondavis/Kitties

Re: core, communityet local- le premier est pour les développeurs de Magento, ne touchez pas. La seconde concerne les extensions destinées à être distribuées à la communauté. La dernière concerne les extensions destinées à être développées localement, pour un système spécifique.

La dernière confusion concerne les packages de conception . Le code que Magento utilise pour rendre et gérer son HTML est un système complètement séparé. C'est pourquoi les phtmlfichiers sont situés séparément des fichiers de module de code . Vous pouvez trouver ces fichiers dans le

app/design

dossier.

La plupart des extensions professionnelles bien écrites sont distribuées sous forme d' extensions Magento Connect qui installent un ou plusieurs modules de code Magento et contiennent un certain nombre de phtmlmodèles personnalisés et de fichiers XML de mise en page installés dans le base package de conception .

Les choses spécifiques que vous pouvez faire avec les modules de code sont innombrables, et plus que n'importe quelle réponse Stack Exchange peut couvrir. J'ai écrit une série d'articles qui, bien qu'un peu datés, sont toujours une introduction solide aux concepts de codage de Magento.

Enfin, Re:

Avez-vous d'autres informations que vous souhaiteriez connaître en commençant par magento?

Je suis un peu biaisé sur celui-ci, mais je vends une extension de débogage Magento appelée Commerce Bug (cliquez sur le petit lien de débogage). Cela recueille et affiche toutes les informations qu'un développeur doit connaître lorsqu'il travaille avec Magento. C'est une aide énorme lorsque vous apprenez le système (je l'ai construit pour m'aider à réapprendre le système quand), et reste utile lorsque vous travaillez au jour le jour sur un système Magento. Si vous facturez toutes les heures pour votre travail, vous rembourserez le prix d'achat sur votre premier projet.


7

En plus de la réponse de @ philwinkle, je veux répondre à votre déclaration concernant la substitution des classes utilisant la priorité de chemin d'inclusion PHP.

Considérez qu'il s'agit d'une solution d'urgence s'il n'y a pas d'autre moyen d'accomplir ce que vous voulez. Souvent, vous pouvez spécifier la classe à utiliser via un paramètre XML de configuration ou à l'aide d'une réécriture de classe (également spécifiée dans config XML).
Les inconvénients du hack de chemin d'accès inclus sont:

  • Ne fonctionne pas pour les contrôleurs
  • Ne fonctionne que pour les classes PHP (par exemple les fichiers config.xml )
  • Vous devrez fusionner les modifications dans vos copies locales lors de la mise à niveau de Magento
  • Confus à déboguer, car la plupart des développeurs de Magento supposent simplement que les modules de l'espace de noms Mage vivent dans le pool de code principal.

1
Absolument correct. Je ne savais pas vraiment comment travailler cela sans réponse séparée.
philwinkle

Je pense que c'était une bonne idée de le séparer.
Vinai

Bon à savoir, je savais que ça n'avait pas l'air "bien" mais je ne savais pas s'il y avait un autre moyen donc j'ai encore beaucoup à apprendre merci
JasonDavis

4

Tout d'abord, vous ne devriez pas penser à réécrire ou étendre les modules ou la classe de base. Vous devez apprendre l'architecture Magento, écrire son propre module / extension de test avec peu de fonctionnalités qui n'ont pas nettoyé Magento, les concepts EAV, la hiérarchie de la disposition, le thème Magento et le flux de conception. Je renvoie ce lien: Modern Magento 1.X Workflow and Development Tools . Bonne chance

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.