Aprendendo o desenvolvimento do Magento Plugin

30

Sou desenvolvedor PHP há mais de 13 anos, tenho amplo conhecimento do próprio PHP desde que outros projetos populares como o WordPress. Não tenho experiência com Magento.

Agora tenho um emprego em período integral trabalhando para uma empresa que usa Magento, todo o meu trabalho de desenvolvimento estará no Magento praticamente agora.

Meus pensamentos iniciais depois de olhar para Magento pela primeira vez são: uau, no que eu me meti agora? Mas então o desenvolvedor experiente em mim sai e lembra, é apenas PHP.

Então, eu tenho algumas perguntas básicas sobre Magento e gostaria muito de receber respostas de desenvolvedores mais experientes de Magento ...

  1. Quais são os melhores lugares mais úteis para aprender sobre o desenvolvimento de magento ao lado deste site?
  2. Extensões / plugins são muito confusos até agora para mim. Outras plataformas como o WordPress permitem que você coloque um plug-in em sua própria pasta e todos os seus arquivos estarão nessa pasta. Pelo que vi até agora, um plug-in pode estar espalhado por várias pastas no Magento, está correto?
  3. Eu aprendi sobre como substituir a funcionalidade do Core. Portanto, se um arquivo no núcleo estiver localizado aqui /app/code/core/Mage/SitemapModel/Resource/Catalog, eu posso substituí-lo criando o arquivo neste local. /app/code/local/Mage/SitemapModel/Resource/CatalogComo isso funciona com uma extensão / plugin? Se eu criar um plug-in que precise substituir a funcionalidade principal, devo ter meus arquivos em todo o lugar para que essa extensão funcione?
  4. Alguma outra informação que você gostaria de conhecer começando com magento?

Obrigado por qualquer insight, eu sei que essa é uma pergunta em várias partes, mas eu sinto que qualquer uma das respostas seria útil para mim e para outras pessoas que estão começando.

JasonDavis
fonte
1
Se houvesse algo como uma mudança de pilha na stackexchange, essas perguntas e respostas seriam uma! Que recurso isso se transformou em :) #
McNab
@McNab Não existe um recurso Sticky, no entanto, as perguntas com mais votos geralmente são mais altas e são vistas com mais frequência. Além disso, esta página magento.stackexchange.com/?tab=month está mostrando esta pergunta como número 2 no momento, de modo que é meio pegajosa, mas diz "Mês", então não tenho certeza de quanto tempo ela manterá sua viscosidade. Concordo que se transformou em um excelente recurso e eu o tenho favorecido e marcado para facilitar o acesso no futuro. BTW por favor, compartilhe esta comunidade com os seus amigos para que é certo para se tornar um lar permanente e não morrer após o período Beta
JasonDavis

Respostas:

24

Vou focar na primeira parte da sua pergunta - " como eu aprendo / onde eu começo? "

Como ex-desenvolvedor do Zend Framework, a maior ajuda para mim no desenvolvimento do Magento foi a explosão no aprendizado on-line que o Magento U trouxe nos últimos 2 anos. Além do aprendizado formal - eu aprendo principalmente fazendo , e estou "fazendo" o Magento há mais de 5 anos.

Alguns recursos concretos de aprendizado:

Além das ferramentas de aprendizado, para mim a maior ferramenta de aprendizado foi examinar os módulos Magento de terceiros. Eu li o código completamente e aprendi com ele. Você pode fazer o mesmo aprendendo com os módulos principais.

Alguns sites que serão úteis para você em sua jornada de aprendizado:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Alguns desenvolvedores épicos a seguir:

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

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

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

Participe socialmente - conheça alguns dos desenvolvedores 'rockstar' e comece a segui-los no Twitter. Entre em contato com pessoas específicas quando precisar de ajuda; esta comunidade é incrivelmente acessível. Use a comunidade para sua vantagem.

Algumas listas do 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 - faça a caminhada no próximo ano para o Magento Imagine no próximo ano e pressione a carne. Encontre-nos, faça perguntas. Saia para os seus encontros locais. Se não houver uma reunião na sua área, inicie uma . Seja persistente. Não deixe sua falta de conhecimento impedi-lo de fazer contatos e conhecer pessoas. Seus relacionamentos na comunidade renderão dividendos.

philwinkle
fonte
14

Meus 2 centavos a resposta brilhante @ philwinkle.

Existem dois PDFs oficiais

1) Guia do desenvolvedor de extensão Magento

80 páginas sobre como criar uma extensão personalizada do zero, passo a passo. O módulo "Notícias" é desenvolvido a partir do zero - ele mostra a estrutura de arquivos e pastas do módulo, arquivos de configuração, controladores, modelos, blocos.

2) O Guia do Designer para Magento pode ser encontrado aqui http://www.magentocommerce.com/resources/magento-user-guide

60 páginas sobre como organizar e criar seus próprios temas, pacotes de acordo com as melhores práticas.

Há também um novo livro especificamente para quem tem experiência com PHP e começa com Magento - Guia do desenvolvedor do Magento PHP, de Allan McGregor, e tem ótimas críticas dos desenvolvedores do Magento na Amazon e em vários blogs

Canais de vídeo: canal do Magento Commerce no YouTube

Conheça os vídeos das conferências Magento

Outros 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/

Sergei Guk
fonte
1
Isso é ótimo - recursos incríveis!
philwinkle
8

Ótimas respostas aqui até agora. A respeito de

Extensões / plugins são muito confusos até agora para mim. Outras plataformas como o WordPress permitem que você coloque um plug-in em sua própria pasta e todos os seus arquivos estarão nessa pasta. Pelo que vi até agora, um plug-in pode estar espalhado por várias pastas no Magento, isso está correto?

A terminologia no Magento fica um pouco confusa. O desenvolvimento inicial da plataforma foi implacavelmente rápido e há muitas vezes em que você verá conceitos sobrepostos, desde falsos começos e mudanças de direção. Extensões / plugins / módulos / Eu sou um desenvolvedor e quero adicionar meu código ao sistema é uma dessas áreas.

Uma extensão Magento Connect é simplesmente um pacote de arquivos que podem ser instalados em um sistema Magento. É completamente dissociado de qualquer outro subsistema programático do Magento.

Mais perto do que você está acostumado, porém, estão os Módulos de Código Magento . Grosso modo, um módulo de código é uma coleção de arquivos PHP que o Magento vê como uma única unidade. Os módulos estão localizados em uma das três pastas

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

Quando você deseja personalizar o Magento ou adicionar novos recursos, quase sempre começa com um módulo de código. De fato, o próprio Magento é construído sobre 60 - 70 módulos de código. Por exemplo, o Mage_Cmsmódulo em

app/code/core/Mage/Cms

contém o código que faz com que os recursos CMS do Magento funcionem. Se você estava indo para criar um módulo que adicionou gatinhos ao Magento, você pode criar um módulo chamado Jasondavis_Kittiese colocá-lo em

app/code/community/Jasondavis/Kitties

Re: core, communitye local- o primeiro é para desenvolvedores Magento, por isso não se tocam. O segundo é para extensões que devem ser distribuídas à comunidade. O último é para extensões que devem ser desenvolvidas localmente, para um sistema específico.

O último pouco de confusão é sobre pacotes de design . O código que o Magento usa para renderizar e gerenciar seu HTML é um sistema completamente separado. É por isso que os phtmlarquivos estão localizados separados dos arquivos do módulo de código . Você pode encontrar esses arquivos no

app/design

pasta.

As extensões profissionais mais bem escritas são distribuídas como Extensões do Magento Connect, que instalam um ou muitos Módulos de Código Magento , e contêm vários phtmlmodelos personalizados e arquivos XML de Layout instalados no base pacote de design .

As coisas específicas que você pode fazer com os módulos de código são inúmeras e mais do que qualquer resposta do Stack Exchange pode cobrir. Escrevi uma série de artigos que, embora um pouco datados, ainda são uma introdução sólida aos conceitos de codificação do Magento.

Finalmente, Re:

Alguma outra informação que você gostaria de conhecer começando com magento?

Sou um pouco tendencioso com este, mas vendo uma extensão de depuração Magento chamada Commerce Bug (clique no pequeno link de depuração). Isso coleta e exibe todas as informações que um desenvolvedor precisa saber ao trabalhar com o Magento. É uma grande ajuda quando você está aprendendo o sistema (eu o construí para me ajudar a aprender o sistema quando), e continua sendo útil quando você trabalha no dia-a-dia em um sistema Magento. Se você estiver cobrando a cada hora pelo seu trabalho, você recuperará o preço de compra no seu primeiro projeto.

Alan Storm
fonte
7

Além da resposta da @ philwinkle, quero responder à sua declaração sobre a substituição de classes usando o PHP include priority path.

Considere uma solução de emergência se não houver outra maneira de realizar o que você deseja. Geralmente, você pode especificar qual classe usar por meio de uma configuração XML de configuração ou usando uma reescrita de classe (também especificada em XML de configuração).
As desvantagens do hack do caminho de inclusão são:

  • Não funciona para controladores
  • Não funciona para nada além de classes PHP (por exemplo, arquivos config.xml )
  • Você precisará mesclar alterações nas cópias locais ao atualizar o Magento
  • Confuso para depurar, pois a maioria dos desenvolvedores do Magento simplesmente assume que os Módulos do espaço para nome do Mage vivem no conjunto de códigos principal.
Vinai
fonte
1
Absolutamente correto. Eu não tinha muita certeza de como trabalhar isso sem uma resposta separada.
philwinkle
Eu acho que foi uma boa ideia mantê-lo separado.
Vinai
É bom saber, eu sabia que não parecia "certo", mas eu não tinha certeza se havia outro caminho para que eu tenho muito a aprender, graças ainda
JasonDavis
4

Antes de tudo, você não deve reescrever ou estender módulos ou classes principais. Você deve aprender a arquitetura Magento, escrever seu próprio módulo / extensão de teste com pouca funcionalidade que não limpe os conceitos Magento, EAV, hierarquia de layout, tema Magento e fluxo de design. Refiro-me a este link: Modern Magento 1.X Workflow e Ferramentas de Desenvolvimento . Boa sorte

mageUz
fonte