Apprendimento dello sviluppo di plugin Magento


30

Sono stato uno sviluppatore di PHP per oltre 13 anni, ho una vasta conoscenza di PHP stesso fino a quando alcuni altri progetti popolari come WordPress. Non ho esperienza con Magento.

Ora ho un lavoro a tempo pieno che lavora per un'azienda che utilizza Magento, tutto il mio lavoro di sviluppo sarà praticamente su Magento ora.

I miei pensieri iniziali dopo aver visto Magento per la prima volta sono, wow in cosa mi sono preso ora? Ma poi lo sviluppatore esperto in me esce e ricorda, è solo PHP.

Quindi ho alcune domande di base su Magento alle quali apprezzerei davvero alcune risposte da sviluppatori Magento più esperti ...

  1. Quali sono i posti più utili per conoscere lo sviluppo di magento accanto a questo sito?
  2. Estensioni / plugin sono molto confusi per me finora. Altre piattaforme come WordPress ti consentono di inserire un plugin nella sua cartella e tutti i suoi file vivranno sotto quella cartella. Da quello che ho visto finora, un plugin potrebbe essere sparpagliato in diverse cartelle in Magento, è corretto?
  3. Ho imparato a scavalcare la funzionalità Core. Quindi, se un file nel core si trova qui, /app/code/core/Mage/SitemapModel/Resource/Catalogallora posso scavalcarlo creando il file in questa posizione, /app/code/local/Mage/SitemapModel/Resource/Catalogquindi come funziona con un'estensione / plugin? Se creo un plug-in che necessita di sovrascrivere le funzionalità di base, allora devo avere i miei file ovunque per far funzionare quell'estensione?
  4. Altre informazioni che vorresti sapere a partire dal magento?

Grazie per qualsiasi intuizione, so che questa è una domanda in più parti ma sento che una qualsiasi delle risposte sarebbe utile a me stesso e agli altri a partire, creerò questo wiki pubblico se dovessi.


1
Se ci fosse qualcosa di appiccicoso su stackexchange, questo Q&A sarebbe uno! Che risorsa si è trasformata in :)
McNab il

@McNab Non esiste una funzione Sticky, tuttavia le domande che hanno il maggior numero di voti generalmente si posizionano più in alto e vengono visualizzate più spesso. Anche questa pagina magento.stackexchange.com/?tab=month sta mostrando questa domanda come numero 2 in questo momento, quindi è una specie di Sticky ma dice "Month", quindi non sono sicuro per quanto tempo manterrà la sua viscosità. Sono d'accordo che si è trasformato in una grande risorsa e l'ho favorito e contrassegnato per un facile accesso in futuro. A proposito, per favore condividi questa comunità con i tuoi amici in modo che sia sicuro di diventare una casa permanente e non morire dopo il periodo Beta
JasonDavis,

Risposte:


24

Mi concentrerò sulla prima parte della tua domanda: " come imparo / da dove inizio? "

Come ex sviluppatore di Zend Framework, il più grande aiuto per me nello sviluppo di Magento è stato l'esplosione dell'apprendimento online che Magento U ha portato negli ultimi 2 anni. A parte l'apprendimento formale, imparo principalmente facendo e sto "facendo" Magento da oltre 5 anni.

Alcune risorse di apprendimento concrete:

A parte gli strumenti di apprendimento, per me il più grande strumento di apprendimento è stato esaminando moduli Magento di terze parti. Ho letto attentamente il codice e ho imparato da esso. Puoi fare lo stesso imparando dai moduli Core.

Alcuni siti che ti saranno utili durante il tuo viaggio di apprendimento:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Alcuni sviluppatori epici da seguire:

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

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

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

Fatti coinvolgere socialmente : incontra alcuni degli sviluppatori "rockstar" e inizia a seguirli su Twitter. Contatta persone specifiche quando hai bisogno di aiuto; questa community è incredibilmente accessibile. Usa la community a tuo vantaggio.

Alcune liste di Twitter:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

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

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

Infine, fai il trekking il prossimo anno a Magento Immagina il prossimo anno e premi la carne. Rintracciarci, farci domande. Partecipa ai tuoi incontri locali. Se un incontro non esiste nella tua zona, creane uno . Sii persistente. Non lasciare che la tua mancanza di conoscenza ti impedisca di fare rete e incontrare persone. Le tue relazioni nella comunità pagheranno i dividendi.


14

I miei 2 centesimi alla brillante risposta di @ philwinkle.

Esistono due PDF ufficiali

1) Guida per gli sviluppatori di Magento Extension

80 pagine su come creare un'estensione personalizzata da zero, passo dopo passo. Il modulo "Novità" è sviluppato da zero: mostrerà la struttura dei file e delle cartelle del modulo, i file di configurazione, i controller, i modelli, i blocchi.

2) La Guida del designer a Magento è disponibile qui http://www.magentocommerce.com/resources/magento-user-guide

60 pagine su come organizzare e creare i tuoi temi, pacchetti secondo le migliori pratiche.

C'è anche un nuovo libro appositamente per coloro che hanno un background PHP e iniziano con Magento - Magento PHP Developer's Guide di Allan McGregor e ha ottime recensioni dagli sviluppatori Magento su Amazon e vari blog

Canali video: canale YouTube di Magento Commerce

Incontra i video delle conferenze di Magento

Altri buoni blog:

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
Questo è fantastico - risorse fantastiche!
Filwinkle,

8

Grandi risposte qui finora tutto intorno. per quanto riguarda

Estensioni / plugin sono molto confusi per me finora. Altre piattaforme come WordPress ti consentono di inserire un plugin nella sua cartella e tutti i suoi file vivranno sotto quella cartella. Da quello che ho visto finora, un plugin potrebbe essere sparso su più cartelle in Magento, è corretto?

La terminologia in Magento diventa un po 'confusa. Lo sviluppo iniziale della piattaforma è stato spietatamente rapido e ci sono molte volte in cui vedrai concetti sovrapposti da false partenze e cambi di direzione. Estensioni / plugin / moduli / Sono-uno-sviluppatore-e-voglio-aggiungere-il-mio-codice-al-sistema è una di queste aree.

Un Magento Connect Extension è semplicemente un pacchetto di file che possono essere installati in un sistema di Magento. È completamente disaccoppiato da qualsiasi altro sottosistema programmatico di Magento.

Più vicini a ciò a cui sei abituato sono i moduli di codice Magento . In parole povere, un modulo di codice è una raccolta di file PHP che Magento vede come singola unità. I moduli si trovano in una delle tre cartelle

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

Quando vuoi personalizzare Magento o aggiungere nuove funzionalità, inizierai quasi sempre con un modulo di codice. In effetti, Magento stesso è costruito su circa 60-70 moduli di codice. Ad esempio, il Mage_Cmsmodulo in

app/code/core/Mage/Cms

contiene il codice che fa funzionare le funzionalità CMS di Magento. Se avessi intenzione di creare un modulo che aggiungesse gattini a Magento, potresti creare un modulo chiamato Jasondavis_Kittiese inserirlo

app/code/community/Jasondavis/Kitties

Re: core, community, e local- il primo è per gli sviluppatori di Magento, in modo da non toccare. Il secondo è per le estensioni che devono essere distribuite alla comunità. L'ultimo è per le estensioni che devono essere sviluppate localmente, per un sistema specifico.

L'ultima confusione riguarda i pacchetti di progettazione . Il codice che Magento usa per rendere e gestire il suo HTML è un sistema completamente separato. Ecco perché i phtmlfile si trovano separati dai file del modulo di codice . Puoi trovare questi file nel

app/design

cartella.

Le estensioni professionali più ben scritte sono distribuite come estensioni Magento Connect che installano uno o più moduli di codice Magento e contengono una serie di phtmlmodelli personalizzati e file XML di layout installati nel base pacchetto di progettazione .

Le cose specifiche che puoi fare con i moduli di codice sono una miriade e più di ogni risposta di Stack Exchange può coprire. Ho scritto una serie di articoli che, sebbene un po 'datati, sono ancora una solida introduzione ai concetti di codifica di Magento.

Infine, Re:

Altre informazioni che vorresti sapere a partire dal magento?

Sono un po 'distorto su questo, ma vendo un'estensione di debug Magento chiamata Commerce Bug (fai clic sul link di debug piccolo). Questo raccoglie e visualizza tutte le informazioni che uno sviluppatore deve sapere quando lavora con Magento. È di grande aiuto quando stai imparando il sistema (l'ho costruito per aiutarmi a imparare il sistema quando) e rimane utile quando lavori quotidianamente su un sistema Magento. Se stai caricando ogni ora per il tuo lavoro, rimborserai il prezzo di acquisto sul tuo primo progetto.


7

Oltre alla risposta di @ philwinkle, desidero rispondere alla tua affermazione relativa alle classi prioritarie che utilizzano il PHP includono la priorità del percorso.

Considera una soluzione di emergenza se non c'è altro modo per ottenere ciò che desideri. Spesso è possibile specificare quale classe utilizzare tramite un'impostazione XML di configurazione o utilizzando una riscrittura di classe (specificata anche in XML di configurazione).
Gli svantaggi dell'hacking del percorso include sono:

  • Non funziona per i controller
  • Non funziona per nient'altro che per le classi PHP (ad esempio file config.xml )
  • Dovrai unire le modifiche alle tue copie locali quando aggiorni Magento
  • Confusione nel debug, poiché la maggior parte degli sviluppatori di Magento presuppone semplicemente che i moduli dallo spazio dei nomi Mage vivano nel pool di codici core.

1
Assolutamente corretto. Non ero davvero sicuro di come lavorare senza una risposta separata.
Filwinkle,

Penso che sia stata una buona idea tenerlo separato.
Vinai,

Buono a sapersi, sapevo che non sembrava "giusto" ma non ero sicuro che ci fosse un altro modo, quindi ho ancora molto da imparare, grazie
JasonDavis,

4

Prima di tutto non dovresti pensare di riscrivere o estendere i moduli o la classe di base. Devi imparare l'architettura Magento, scrivere il proprio modulo / estensione di test con poca funzionalità che non ha pulito Magento, concetti EAV, gerarchia di layout, tema Magento e flusso di progettazione. Mi riferisco questo link: moderna Magento 1.X Flusso di lavoro e strumenti di sviluppo . In bocca al lupo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.