Modul personalizat Magento: pas cu pas pentru al crea în Magento 2

Publicat: 2020-11-11

Modulul personalizat Magento este un proces de dezvoltare crucial pentru orice dezvoltator Magento. După cum știți, la un moment dat, un dezvoltator ar putea avea nevoie să-și integreze propria funcționalitate sau modul. În această postare pe blog de astăzi, vă vom ghida pas cu pas pentru a dezvolta un modul personalizat în Magento 2

Ultima actualizare: tocmai am lansat versiunea 2.0 a temei Claue Multipurpose Magento 2, cu o mulțime de îmbunătățiri ale performanței și funcții exclusive. Verificați această temă acum: Claue Magento Theme 2. 0

claue2_editat (1)

Demo live

Claue – Tema Clean, Minimal Magento 2&1 este un șablon excelent pentru un magazin de comerț electronic modern și curat, cu peste 40 de aspecte de pagină de pornire și o mulțime de opțiuni pentru magazin, blog, portofoliu, machete de locator de magazine și alte pagini utile. Claue versiunea 2.0 vine cu o mulțime de caracteristici exclusive, inclusiv:

  • Bazat pe tema Luma.
  • Îndeplinește toate standardele temei Magento
  • Îmbunătățirea semnificativă a performanței
  • Compatibil cu majoritatea extensiilor de la terți.
  • Complet compatibil cu Magento 2.4.x

Această a doua versiune avansată se diferențiază complet de cea anterioară. Astfel, dacă utilizați Claue versiunea 1 și doriți să actualizați la Claue versiunea 2, nu puteți decât să reconstruiți un nou site web, în ​​loc să actualizați de la versiunea veche. Acum, să revenim la subiectul principal.

Magento este o platformă foarte versatilă care vine cu o mulțime de funcții utile și acceptă atât module gratuite, cât și module plătite. Oferă module care pot fi instalate online și pot fi personalizate pentru a răspunde nevoilor clientului. Personalizarea se realizează prin generarea unui modul și apoi poate fi modificată în funcție de alegere utilizând puterea limbajului PHP. De exemplu, dacă site-ul nostru web are o caracteristică specifică sau un set de caracteristici sau cerințe care nu sunt comune pe piață, un modul poate umple acel gol pentru noi.

Magento vine cu 3 tipuri de pool de coduri (Cod, Core și Local) în care se află modulele personalizate și de bază. Pool-ul (folderul) local este locul în care se află sau ar trebui plasate toate modulele personalizate. Mai jos sunt prezentate componentele pe care un modul ar trebui să le includă.

  • Blocuri – Aici trebuie să furnizați caracteristicile folosite pentru a afișa datele în șabloanele noastre.
  • Modele – Toată logica de afaceri este conținută aici.
  • Resurse – Modelele includ funcții care sunt utilizate pentru interacțiunea cu bazele de date.
  • Controlere – Definește aspectul paginii și blochează fișierele și sunt încărcate atunci când este solicitată o adresă URL.
  • etc – Include fișiere de configurare în formate XML care arată Magento câte fișiere au modulele și cum interacționează modulul.
  • Ajutoare – Include funcții care sunt utilizate pentru definirea logicii de afaceri comune (cum ar fi redimensionarea imaginii, validarea). Aceste funcții pot fi utilizate oriunde în aplicația Magento
  • sql – Conține scripturi SQL pentru a crea, modifica sau șterge tabele SQL.

Cum se creează un modul personalizat Magento?

Creați un modul simplu în Magento 2

Generarea unui modul simplu în Magento 2 este ușoară. Va trebui să îndepliniți următoarele sarcini:

  • Creați un director nou pentru modul
  • Creați un script registration.php
  • Creați un fișier de informații etc/module.xml
  • Instalați noul modul

Creați un director nou pentru modul

Există două opțiuni de selectat pentru poziția noului director

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

Puteți alege prima opțiune dacă modulul dvs. este destinat unui anumit magazin online la care lucrați. Dar dacă generați un modul cu scopul de a fi utilizat pe diferite site-uri web, este mai potrivit să selectați a doua opțiune. Acum voi folosi prima opțiune pentru acest exemplu.

În primul rând, trebuie să creați un director numit EndPoint (numele furnizorului nostru) cu un subdirector în el, MyModule :

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

Creați scriptul registration.php

Fișierul registration.php îi spune lui Magento să înregistreze noul modul sub un anumit nume și locație.

Generați un fișier numit app/code/EndPoint/MyModule/registration.php cu codul de mai jos

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

Creați fișierul de informații etc/module.xml

La acest pas, trebuie să creați fișierul nostru cu informații despre modul, unde vom specifica numărul versiunii modulului. În primul rând, trebuie să generăm directorul etc în interiorul app/code/EndPoint/MyModule :

 mkdir app/code/EndPoint/MyModule/etc

apoi creați module.xml cu următoarea linie de comandă

 <?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 >

Instalați noul modul

Acum trebuie să instalăm și să activăm noul modul, deci de la rădăcina site-ului nostru, trebuie să rulăm comanda

 php bin/magento setup:upgrade

Magento va scoate o listă de nume de module și actualizări de configurare, iar noul modul EndPoint_MyModule ar trebui să fie listat în acea listă.

Adăugați o rută personalizată la modulul nostru

Acum avem un modul funcțional, activat, dar încă nu face nimic! Care este o modalitate simplă de a verifica dacă modulul nostru este activat? Să setăm o rută personalizată, așa că dacă atingem o adresă URL precum https://{our_website}/mymodule/test/helloworld putem returna un răspuns personalizat de la un controler.

Crearea unei rute personalizate va necesita câțiva pași în sine:

  • Creați un director nou pentru controler
  • Creați un fișier etc/routes.xml
  • Creați controlerul
  • Actualizați noul modul

Creați un director nou pentru controler

În primul rând, trebuie să creăm un nou director în care va locui noul controler PHP pentru ruta noastră personalizată. Noua cale de director ar trebui să fie:

app/code/EndPoint/MyModule/Controller

Puteți genera câte niveluri de director doriți, în funcție de calea dorită. De exemplu, dacă generați o clasă numită Index în app/code/EndPoint/MyModule/Controller , adresa URL care va fi direcționată către acest controler va fi https://{our_website}/mymodule/index (directorul „Controller” este ignorat).

Cumpărați Dacă generați o clasă numită HelloWorld în app/code/EndPoint/MyModule/Controller/Test , adresa URL rezultată va fi https://{our_website}/mymodule/test/helloworld .

Creați fișierul etc/routes.xml

routes.xml va spune Magento ce URL de bază va fi folosită pentru modulul nostru. În primul rând, trebuie să creăm directorul „frontend” în care trebuie să fie plasat fișierul routes.xml:

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

Când aveți nevoie ca URL-ul de bază să fie MyModule , trebuie să generați un fișier XML în noul director care va direcționa toate solicitările făcute către adresa URL dată către controlerele noastre de modul:

 <?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ți controlerul

Dacă dorim să răspundem la solicitările pentru https://{our_website}/mymodule/test/helloworld , va trebui să generați directorul de bază Controller și subdirectorul Test :

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

În acest director, trebuie să generați controlerul Magento personalizat. Toate controlerele de rută ar trebui să extindă \Magento\Framework\App\Action\Action . De asemenea, trebuie să avem o metodă public construct() pentru a transmite contextul strămoșului nostru și o funcție execute() care va fi apelată când URL-ul este accesat:

 <?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!" ; } }

Actualizați noul modul

La acest pas, trebuie să actualizați configurația Magento. Dar pentru că ați inclus un nou controler care primește parametri de la injectorul de dependență în construcție. De asemenea, trebuie să compilați motorul de injecție a dependenței (cum ar fi fabrici, proxy și interceptoare). În cele din urmă, trebuie să goliți memoria cache, astfel încât conținutul nou să fie difuzat de la adresa URL personalizată:

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

Si asta e. Deschideți adresa URL /helloworld/index/index în browser și ar trebui să obțineți ceva de genul acesta: Asta înseamnă că modulul nostru funcționează!

modul personalizat magento

Se ajunge la sfârșitul tutorialelor: Modul personalizat Magento: Pas cu pas pentru al crea în Magento 2. Sperăm că acesta este un blog util pentru tine. Dacă doriți să înțelegeți mai multe despre Magento, puteți citi articolul nostru pe platforma Magento pentru mai multe detalii, nu uitați să consultați extensiile noastre Magento 2 și temele noastre Magento 2 pentru a vă susține site-ul web.