Desarrollo de plugins de aprendizaje de Magento

30

He sido desarrollador de PHP por más de 13 años, tengo un amplio conocimiento de PHP en sí mismo, mientras que otros proyectos populares como WordPress. No tengo experiencia con Magento.

Ahora tengo un trabajo de tiempo completo trabajando para una compañía que usa Magento, todo mi trabajo de desarrollo estará en Magento más o menos ahora.

Mis pensamientos iniciales después de mirar a Magento por primera vez son: wow, ¿en qué me he metido ahora? Pero entonces el desarrollador experimentado en mí sale y recuerda, es solo PHP.

Así que tengo algunas preguntas básicas de Magento que realmente agradecería algunas respuestas de desarrolladores de Magento más experimentados ...

  1. ¿Cuáles son los mejores lugares más útiles para aprender sobre el desarrollo de magento junto a este sitio?
  2. Las extensiones / complementos son muy confusos hasta ahora para mí. Otras plataformas como WordPress le permiten colocar un complemento en su propia carpeta y todos sus archivos vivirán debajo de esa carpeta. Por lo que he visto hasta ahora, un complemento puede estar disperso en varias carpetas en Magento, ¿es esto correcto?
  3. He aprendido sobre cómo anular la funcionalidad Core. Entonces, si un archivo en el núcleo se encuentra aquí, /app/code/core/Mage/SitemapModel/Resource/Catalogentonces puedo anularlo creando el archivo en esta ubicación, /app/code/local/Mage/SitemapModel/Resource/Catalog¿cómo funciona esto con una extensión / complemento? Si creo un complemento que necesita anular la funcionalidad principal, ¿debo tener mis archivos por todas partes para que esa extensión funcione?
  4. ¿Alguna otra información que desearía saber comenzando con magento?

Gracias por cualquier idea, sé que esta es una pregunta de varias partes, pero creo que cualquiera de las respuestas sería útil para mí y para otros, comenzaré este wiki público si debo hacerlo también.

JasonDavis
fuente
1
Si existiera algo así como una pegajosa en stackexchange, ¡entonces este Q&A sería uno! En qué recurso se ha convertido esto :)
McNab
@McNab No hay una función Sticky, sin embargo, las preguntas que tienen más votos generalmente se clasifican más alto y se ven con más frecuencia. Además, esta página magento.stackexchange.com/?tab=month muestra esta pregunta como número 2 en este momento, por lo que es un poco pegajoso, pero dice "Mes", así que no estoy seguro de cuánto tiempo retendrá su pegajosidad. Estoy de acuerdo en que se ha convertido en un gran recurso y lo tengo favorito y marcado para facilitar el acceso en el futuro. Por cierto, comparta esta comunidad con sus amigos para que sea seguro convertirse en un hogar permanente y no morir después del período Beta
JasonDavis

Respuestas:

24

Me centraré en la primera parte de su pregunta: " ¿Cómo aprendo / dónde empiezo? "

Como antiguo desarrollador de Zend Framework, la mayor ayuda para mí en el desarrollo de Magento ha sido la explosión en el aprendizaje en línea que Magento U ha traído en los últimos 2 años. Además del aprendizaje formal, aprendo principalmente haciendo , y he estado "haciendo" Magento durante más de 5 años.

Algunos recursos de aprendizaje concretos:

Además de las herramientas de aprendizaje, para mí la herramienta de aprendizaje más grande ha sido el examen de módulos de Magento de terceros. Leo el código a fondo y aprendo de él. Puede hacer lo mismo aprendiendo de los módulos principales.

Algunos sitios que serán útiles para usted en su viaje de aprendizaje:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Algunos desarrolladores épicos a seguir:

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

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

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

Participe socialmente : conozca a algunos de los desarrolladores 'rockstar' y comience a seguirlos en Twitter. Comuníquese con personas específicas cuando necesite ayuda; Esta comunidad es increíblemente accesible. Use la comunidad para su ventaja.

Algunas listas de Twitter:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

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

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

Finalmente, haga la caminata el próximo año a Magento Imagine el próximo año y presione la carne. Rastrearnos, hacernos preguntas. Ve a tus reuniones locales. Si no existe una reunión en su área, comience una . Se persistente. No permita que su falta de conocimiento le impida establecer contactos y conocer gente. Sus relaciones en la comunidad darán sus frutos en dividendos.

philwinkle
fuente
14

Mis 2 centavos a la brillante respuesta de @ philwinkle.

Hay dos archivos PDF oficiales.

1) Guía del desarrollador de Magento Extension

80 páginas sobre cómo crear una extensión personalizada desde cero paso a paso. El módulo "Noticias" se desarrolla desde cero: le mostrará la estructura de los archivos y carpetas de los módulos, los archivos de configuración, los controladores, los modelos y los bloques.

2) La Guía del diseñador de Magento se puede encontrar aquí http://www.magentocommerce.com/resources/magento-user-guide

60 páginas sobre cómo organizar y crear sus propios temas, paquetes de acuerdo con las mejores prácticas.

También hay un nuevo libro específicamente para aquellos que tienen experiencia en PHP y comienzan con Magento: Magento PHP Developer's Guide de Allan McGregor y tiene muy buenas críticas de los desarrolladores de Magento en Amazon y varios blogs.

Canales de video: canal de YouTube Magento Commerce

Conoce los videos de las conferencias de Magento

Otros buenos 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
fuente
1
Esto es genial, ¡recursos increíbles!
philwinkle
8

Grandes respuestas aquí hasta ahora por todos lados. Respecto a

Las extensiones / complementos son muy confusos hasta ahora para mí. Otras plataformas como WordPress le permiten colocar un complemento en su propia carpeta y todos sus archivos vivirán debajo de esa carpeta. Por lo que he visto hasta ahora, un complemento puede estar disperso en varias carpetas en Magento, ¿es esto correcto?

La terminología en Magento se vuelve un poco confusa. El desarrollo inicial de la plataforma fue implacablemente rápido y hay muchas veces en las que verá conceptos superpuestos desde comienzos falsos y cambios de dirección. Extensiones / complementos / módulos / Soy-un-desarrollador-y-quiero-agregar-mi-código-al-sistema es una de estas áreas.

Una extensión de Magento Connect es simplemente un paquete de archivos que pueden instalarse en un sistema Magento. Está completamente desacoplado de cualquiera de los otros subsistemas programáticos de Magento.

Sin embargo, más cerca de lo que estás acostumbrado son los módulos de código de Magento . En términos generales, un módulo de código es una colección de archivos PHP que Magento ve como una sola unidad. Los módulos están ubicados en una de las tres carpetas.

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

Cuando desee personalizar Magento o agregar nuevas funciones, casi siempre comenzará con un módulo de código. De hecho, Magento está construido sobre unos 60 a 70 módulos de código. Por ejemplo, el Mage_Cmsmódulo en

app/code/core/Mage/Cms

contiene el código que hace que las funciones CMS de Magento funcionen. Si iba a crear un módulo que agregara gatitos a Magento, podría crear un módulo llamado Jasondavis_Kittiesy colocarlo en

app/code/community/Jasondavis/Kitties

Re: core, communityy local- el primero es para los desarrolladores de Magento, por lo que no toque. El segundo es para extensiones que están destinadas a ser distribuidas a la comunidad. El último es para extensiones que están destinadas a ser desarrolladas localmente, para un sistema específico.

El último bit de confusión está relacionado con los paquetes de diseño . El código que Magento usa para representar y administrar su HTML es un sistema completamente separado. Es por eso que los phtmlarchivos se encuentran separados de los archivos del módulo de código . Puede encontrar estos archivos en el

app/design

carpeta.

La mayoría de las extensiones profesionales bien escritas se distribuyen como extensiones de Magento Connect que instalan uno o varios módulos de código de Magento y contienen una serie de phtmlplantillas personalizadas y archivos XML de diseño instalados en el base paquete de diseño .

Las cosas específicas que puede hacer con los módulos de código son innumerables, y más de lo que cualquier respuesta de Stack Exchange puede cubrir. Escribí una serie de artículos que, aunque un poco anticuados, siguen siendo una introducción sólida a los conceptos de codificación de Magento.

Finalmente, re:

¿Alguna otra información que desearía saber comenzando con magento?

Estoy un poco sesgado en este caso, pero vendo una extensión de depuración de Magento llamada Commerce Bug (haga clic en el pequeño enlace de depuración). Esto recopila y muestra toda la información que un desarrollador necesita saber cuando trabaja con Magento. Es una gran ayuda cuando estás aprendiendo el sistema (lo construí para ayudarme a aprender el sistema en el pasado), y sigue siendo útil cuando trabajas día a día en un sistema Magento. Si está cobrando por su trabajo por hora, recuperará el precio de compra en su primer proyecto.

Alan Storm
fuente
7

Además de la respuesta de @ philwinkle, quiero responder a su declaración sobre la anulación de clases usando la prioridad de ruta de inclusión PHP.

Considere que es una solución de emergencia si no hay otra forma de lograr lo que desea. A menudo puede especificar qué clase usar a través de una configuración XML de configuración, o usando una reescritura de clase (también especificada en config XML).
Las desventajas del hack de ruta de inclusión son:

  • No funciona para controladores
  • No funciona para nada más que clases de PHP (por ejemplo, archivos config.xml )
  • Tendrá que combinar los cambios en sus copias locales cuando actualice Magento
  • Confuso para depurar, ya que la mayoría de los desarrolladores de Magento simplemente asumen que los Módulos del espacio de nombres de Mage viven en el grupo de código central.
Vinaí
fuente
1
Absolutamente correcto. No estaba realmente seguro de cómo trabajar esto sin una respuesta por separado.
philwinkle
Creo que fue una buena idea mantenerlo separado.
Vinai
Es bueno saber que sabía que no se veía "bien", pero no estaba seguro de si había otra manera, así que todavía tengo mucho que aprender, gracias
JasonDavis
4

En primer lugar, no debe pensar en reescribir o extender módulos o clases principales. Debe aprender la arquitectura de Magento, escribir su propio módulo / extensión de prueba con poca funcionalidad que no haya limpiado Magento, conceptos EAV, jerarquía de diseño, tema de Magento y flujo de diseño. Me refiero a este enlace: Modern Magento 1.X Workflow y herramientas de desarrollo . Buena suerte

mageUz
fuente