Magento 2: Appunti da un neofita

Che cosa è?

Dalla pagina di wikipedia: “[…] is an open-source e-commerce platform wirtten in PHP […] Magento 2 introduced the Model-View-ViewModel pattern”.

Come è strutturato?

La struttura base di Magento 2 si trova nella cartella “app”, dove sono presenti 3 cartelle: code, design, i18n.

Queste cartelle rappresentano i tre principali suddivisioni: Logica, grafica e “internalizzazione”.

Per avere una visione più ambia questa è la documentazione ufficiale: Create your component file structure

Tema

Per il frontend, Magento è formato da 2 file: xml e phtml

Il xml permette di creare la struttura della pagina, dove connette le pagine phtml alle classi che offrono le funzioni, in modo che il phtml sia più orientato alla grafica, mentre tutte le operazioni vengano fatte dai moduli. Qui la documentazione ai “Layout instruction”

Per la struttura del tema questo è la “sitemap” della documentazione: “Theme structure”

Moduli

I moduli permettono di implementare una logica all’interno del sito.
Questo permette di estendere le funzionalità, per esempio quella di aggiungere una pagina per visualizzare nuove informazioni (attraverso le rotte: “Create a new Page”).

Questa è la guida per creare un nuovo modulo: “Create a new Module”

Una delle funzionalità introdotte su Magento 2 rispetto alla versione precedente è quella della Dependency injection (Qui il link alla documentazione ufficiale), permettendo di usare le dipendenze che vengono caricate direttamente dal sistema.
Durante lo sviluppo, quando si aggiunge una nuova dipendenza, bisogna ricompilare il codice ( bin/magento setup:di:compile -> qui il link alla guida)

Database

Per avere un idea di come vengono salvati i dati di “default” nel database, una delle risorse che potrebbe tornare comodo è la visualizzazione di Anna Völkl, per esempio questa è della versione 2.1.

Per gestire la struttura del database, per esempio aggiungere una nuova tabella o modificarne una pre esistente, si esegue come nel seguente link “Declarative Schema”

Events e Observer

Per chi arriva dallo sviluppo di codice di WordPress, l’utilizzo è prettamente simile.

Il concetto è quello di poter estendere le funzionalità del codice di default senza modificarlo, ma dichiarando che, all’avventimento di quel evento/funzione, di richiamare in un determinato momento (prima, durante o dopo) la nostra funzione. Qui la spiegazione più dettagliata

Qui il link agli eventi di default

i18n

Per le traduzioni delle parti di frontend si usa lo standard, qui di seguito un esempio del file:

"label_add_to_cart","Aggiungi al carrello"

Per ogni lingua si ha un file, all’interno della cartella i18n, con il nome della lingua di riferimento, per esempio per l’italiano il file sarà: it_IT.csv

Qui la documentazione ufficiale: Translation overview

Altri spunti?

Oltre alla documentazione ufficiale ( https://devdocs.magento.com/ ), ci sono altre fonti che possono aiutare.
Qui ne metto da esempio:

Su Youtube, uno dei canali che tratta magento è quello di Max Pronko

Invece un libro sullo sviluppo di moduli in italiano che spiega passo a passo è questo: Amazon: Magento 2 guida allo sviluppo, scritto da Michele Fantetti (questo è il suo sito web: fantetti.net

Un collettore di risorse, che al momento non ho ancora visionato, è questo: aleron75/mageres

Conclusione

Questo articolo è stato fatto principalmente con il focus orientato al codice, ma credo che per iniziare a capire le funzionalità che ci permette di avere Magento 2 sarebbe necessario testare il backend e il frontend. In questo modo si può capire come un utente si registra, i dati necessari per creare un ordine e gli attributi che si possono aggiungere ai prodotti.
Per questa parte la guida adatta è la seguente: docs.magento.com/user-guide/