Modulo personalizzato Magento: passo dopo passo per crearlo in Magento 2

Pubblicato: 2020-11-11

Il modulo personalizzato Magento è un processo di sviluppo cruciale per qualsiasi sviluppatore Magento. Come sai, a un certo punto, uno sviluppatore potrebbe aver bisogno di integrare la propria funzionalità o modulo. In questo post sul blog di oggi, ti guideremo passo dopo passo per sviluppare un modulo personalizzato in Magento 2

Ultimo aggiornamento: abbiamo appena rilasciato la versione 2.0 di Claue Multipurpose Magento 2 Theme, con una serie di miglioramenti delle prestazioni e funzionalità esclusive. Dai un'occhiata a questo tema ora: Claue Magento Theme 2. 0

claue2_edita (1)

Dimostrazione dal vivo

Claue – Clean, Minimal Magento 2&1 Theme è un modello eccellente per un negozio di eCommerce moderno e pulito con oltre 40 layout di home page e tonnellate di opzioni per negozi, blog, portfolio, layout di store locator e altre pagine utili. Claue versione 2.0 include una serie di funzionalità esclusive tra cui:

  • Essendo basato sul tema Luma.
  • Soddisfa tutti gli standard del tema Magento
  • Miglioramento significativo delle prestazioni
  • Compatibile con la maggior parte delle estensioni di terze parti.
  • Pienamente compatibile con Magento 2.4.x

Questa seconda versione avanzata si differenzia completamente dalla precedente. Pertanto, se stai utilizzando Claue versione 1 e desideri eseguire l'aggiornamento a Claue versione 2, puoi ricostruire un nuovo sito Web solo no anziché aggiornare dalla vecchia versione. Ora, torniamo all'argomento principale.

Magento è una piattaforma molto versatile che include molte funzioni utili e supporta moduli sia gratuiti che a pagamento. Fornisce moduli che possono essere installati online e possono essere personalizzati per soddisfare le esigenze del cliente. La personalizzazione si ottiene generando un modulo e quindi può essere modificato a seconda della scelta sfruttando la potenza del linguaggio PHP. Ad esempio, se il nostro sito Web ha una caratteristica specifica o un insieme di caratteristiche o requisiti che non sono comuni al mercato, un modulo può colmare tale lacuna per noi.

Magento viene fornito con 3 tipi di pool di codice (Code, Core e Local) in cui risiedono i moduli personalizzati e core. Il pool locale (cartella) è dove risiedono o devono essere posizionati tutti i moduli personalizzati. Di seguito sono indicati i componenti che un modulo dovrebbe includere.

  • Blocchi : qui è necessario fornire le funzionalità utilizzate per mostrare i dati nei nostri modelli.
  • Modelli : tutta la logica aziendale è contenuta qui.
  • Risorsa : i modelli includono funzioni utilizzate per l'interazione con il database.
  • Controller : definisce il layout della pagina e blocca i file e vengono caricati quando viene richiesto un URL.
  • etc – Include file di configurazione in formato XML che mostrano a Magento quanti file hanno i moduli e come interagisce il modulo.
  • Helper : include funzioni utilizzate per definire la logica aziendale comune (come il ridimensionamento delle immagini, la convalida). Queste funzioni possono essere utilizzate ovunque nell'applicazione Magento
  • sql – Contiene script SQL per creare, modificare o eliminare tabelle SQL.

Come creare un modulo personalizzato Magento?

Crea un semplice modulo in Magento 2

Generare un semplice modulo in Magento 2 è facile. Dovrai svolgere le seguenti attività:

  • Crea una nuova directory per il modulo
  • Crea uno script registration.php
  • Crea un file di informazioni etc/module.xml
  • Installa il nuovo modulo

Crea una nuova directory per il modulo

Ci sono due opzioni da selezionare per la posizione della nuova directory

  • app/code/{vendor}/
  • vendor/{vendor}/

Puoi scegliere la prima opzione se il tuo modulo è destinato a un negozio online specifico su cui stai lavorando. Ma se stai generando un modulo con lo scopo di essere utilizzato su vari siti Web, è più adatto selezionare la seconda opzione. Ora userò la prima opzione per questo esempio.

Innanzitutto, devi creare una directory denominata EndPoint (il nome del nostro fornitore) con una sottodirectory al suo interno, MyModule :

 cd {website_root} mkdir -p app/code/EndPoint/MyModule

Crea lo script registration.php

Il file registration.php dice a Magento di registrare il nuovo modulo con un nome e una posizione specifici.

Genera un file denominato app/code/EndPoint/MyModule/registration.php con il codice seguente

 <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'EndPoint_MyModule' , __DIR__ );

Crea il file di informazioni etc/module.xml

A questo punto, devi creare il nostro file di informazioni sul modulo, dove specificheremo il numero di versione del modulo. Innanzitutto, dobbiamo generare la directory etc all'interno di app/code/EndPoint/MyModule :

 mkdir app/code/EndPoint/MyModule/etc

quindi crea module.xml con la seguente riga di comando

 <?xml version="1.0"?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:Module/etc/module.xsd" > < module name = "EndPoint_MyModule" setup_version = "1.0.0" > </ module > </ config >

Installa il nuovo modulo

Ora dobbiamo installare e abilitare il nuovo modulo, quindi dalla radice del nostro sito Web, dobbiamo eseguire il comando

 php bin/magento setup:upgrade

Magento eliminerà un elenco di nomi di moduli e aggiornamenti di configurazione e il nuovo modulo EndPoint_MyModule dovrebbe essere elencato in quell'elenco

Aggiungi un percorso personalizzato al nostro modulo

Ora abbiamo un modulo funzionante e abilitato, ma non sta ancora facendo nulla! Qual è un modo semplice per verificare che il nostro modulo sia abilitato? Impostiamo un percorso personalizzato, quindi se colpiamo un URL come https://{our_website}/mymodule/test/helloworld possiamo restituire una risposta personalizzata da un controller.

La creazione di un percorso personalizzato richiederà alcuni passaggi da sola:

  • Creare una nuova directory per il controller
  • Crea un etc/routes.xml
  • Crea il controllore
  • Aggiorna il nuovo modulo

Creare una nuova directory per il controller

Innanzitutto, dobbiamo creare una nuova directory in cui vivrà il nuovo controller PHP per il nostro percorso personalizzato. Il nuovo percorso della directory dovrebbe essere:

app/code/EndPoint/MyModule/Controller

Puoi generare tutti i livelli di directory che desideri, in base al nostro percorso desiderato. Ad esempio, se si genera una classe denominata Index in app/code/EndPoint/MyModule/Controller , l'URL che verrà instradato a questo controller sarà https://{our_website}/mymodule/index (la directory "Controller" è ignorato).

Acquista Se generi una classe denominata HelloWorld in app/code/EndPoint/MyModule/Controller/Test , l'URL risultante sarà https://{our_website}/mymodule/test/helloworld .

Crea il file etc/routes.xml

routes.xml dirà a Magento quale URL di base verrà utilizzato per il nostro modulo. Innanzitutto, dobbiamo creare la directory "frontend" in cui deve essere posizionato il file rotte.xml:

 mkdir app/code/EndPoint/MyModule/etc/frontend

Quando è necessario che l'URL di base sia MyModule , è necessario generare un file XML all'interno della nuova directory che indirizzerà tutte le richieste effettuate all'URL specificato ai nostri controller del modulo:

 <?xml version="1.0" ?> < config xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "urn:magento:framework:App/etc/routes.xsd" > < router id = "standard" > < route frontName = "mymodule" id = "mymodule" > < module name = "EndPoint_MyModule" /> </ route > </ router > </ config >

Crea il controllore

Se vogliamo rispondere alle richieste di https://{our_website}/mymodule/test/helloworld dovrai generare la directory Controller di base e la sottodirectory Test :

 mkdir -p app/code/EndPoint/MyModule/Controller/Test

In questa directory, devi generare il nostro controller Magento personalizzato. Tutti i controller di percorso dovrebbero estendere \Magento\Framework\App\Action\Action . Abbiamo anche bisogno di un metodo public construct() per passare il contesto al nostro predecessore e un execute() una funzione che verrà chiamata quando viene colpito l'URL:

 <?php namespace EndPoint \ MyModule \ Controller \ Test ; class HelloWorld extends \ Magento \ Framework \ App \ Action \ Action { public function __construct ( \Magento\Framework\App\Action\Context $context ) { parent ::__construct( $context ); } public function execute () { echo "Hello world!" ; } }

Aggiorna il nuovo modulo

A questo punto, è necessario aggiornare la nostra configurazione Magento. Ma poiché hai incluso un nuovo controller che ottiene i parametri dall'iniettore di dipendenza nel costrutto. È inoltre necessario compilare il motore di iniezione delle dipendenze (come fabbriche, proxy e intercettori). Infine, devi svuotare la cache in modo che i nuovi contenuti vengano serviti dal nostro URL personalizzato:

 php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush

E questo è tutto. Apri l' URL /helloworld/index/index nel tuo browser e dovresti ottenere qualcosa del genere: significa che il nostro modulo funziona!

modulo personalizzato magento

Arriva alla fine dei tutorial: Modulo personalizzato Magento: Passo dopo passo per crearlo in Magento 2. Speriamo che questo sia un blog utile per te. Se vuoi saperne di più su Magento puoi leggere il nostro articolo sulla piattaforma Magento per maggiori dettagli, ricorda anche di controllare le nostre estensioni Magento 2 e i nostri temi Magento 2 per supportare il tuo sito web.