Dezvoltarea modulelor personalizate Magento este o parte esențială a oricărui proiect de dezvoltare Magento sau a proiectului Magento, deoarece în orice moment ați putea dori să vă integrați propria dvs. funcție / modul în proiectul dvs. Magento existent.
În această serie, voi studia detaliile dezvoltării modulului personalizat Magento.
Dacă doriți să mergeți mai departe cu dezvoltarea Magento, consultați gama largă de extensii Magento utile pe Envato Market.
Extensii Magento pe Envato MarketDe-a lungul acestei serii, mă refer la Magento Community Edition 1.7, deși structurile modulelor personalizate sunt aceleași în toate versiunile Magento. Înainte de a merge vom începe dezvoltarea modulului real, să înțelegem rapid structura de bază a Magento.
Ori de câte ori instalați un Magento proaspăt, veți observa următoarea structură de directoare Magento:
Ca orice alte cadre majore, cum ar fi Joomla, CakePHP, CodeIgniter etc., Magento urmează și arhitectura bazată pe MVC, deși acest lucru este puțin diferit de arhitectura PHP MVC de bază. Aici, voi explica diferența în arhitectura Magento prin compararea cu arhitectura PHP MVC simplă.
În modelul tipic MVC, fluxul aplicației este ceva de genul:
index.php
- de unde este determinat întregul mecanism de direcționare a aplicațiilor.Arhitectura MVC a Magento adaugă câteva straturi modelului MVC, dar fluxul de bază al controlului unei aplicații este după cum urmează:
index.php
- de unde va fi inițializată întreaga aplicație.Inițial, acest lucru poate fi dificil de înțeles, deoarece conține câteva straturi suplimentare. Pentru a vă familiariza mai mult cu fluxul de control, să dezvoltăm un modul personalizat "Hello World".
Magento conține trei tipuri de baze de cod în care se află toate modulele custom și core de Magento.
Astfel, avem două posibilități de alegere: comunitare sau locale. Deoarece lucrăm la propriul nostru proiect, vom folosi o piscină locală, deși nu există nici o restricție privind utilizarea bazei comunității, fie ea.
Structura
Modulele Magento constau din următoarele componente:
Trebuie să oferim un nume modulului nostru. În general, numele modulelor Magento sunt alcătuite din două părți:
ca autor sau nume de companie și
ca nume de modul real.
Pe baza acestei convenții de numire, dau modulul nostru Chiragdodia_Mymodule Nume. Vom menționa acest nume în această serie.
Permite crearea bazei de directoare pe structura de mai sus. Mergeți la direcția de instalare Magento, apoi navigați la app / code / local
și creați directoarele după cum se arată mai jos.
Apoi, vom configura și activa modulul nostru prin crearea fișierului config Chiragdodia_Mymodule.xml
în app / etc / module
director. Acest director conține fișiere de configurare pentru toate modulele.
Adevărat local
Acest fișier îi va spune Magento despre locația modulului nostru. În activ
etichetă, am specificat Adevărat
pentru a permite modulul nostru. Dacă totul este corect până acum, atunci veți găsi modulul dvs. în Panoul de gestionare Magento> Sistem> Configurare> Advanced> Advanced> Dezactivare ieșire module listă. De aici puteți activa și dezactiva modulul.
Apoi vom crea fișierul nostru de configurare a modulului. Acest fișier îi va spune Magento totul despre modulul nostru. Aceasta include câte fișiere conține modulele noastre, ce tip de fișiere (modele, ajutoare, clase de baze de date) și așa mai departe.
Mergi la app / code / local / Chiragdodia / Mymodule / etc
și de a crea un config.xml
fișier care va conține următorul conținut
0.1.0 Chiragdodia_Mymodule mymodule
Hai să trecem prin linie pentru a înțelege fiecare etichetă. Aici este prima etichetă
care conține numele și versiunea modulului nostru. Numărul versiunii este foarte important atunci când vine vorba de actualizarea modulului dvs. actualizați modulul.
eticheta va spune Magento despre controlor expediat. În interiorul
etichetă, am definit
care le spune Magento cum să acceseze controlerele noastre prin intermediul mecanismului de rutare.
În
tag, am definit numele modulului în
tag - ul și numele fronturii în
. Folosind un nume de frontend, putem accesa modulul nostru în interfață cum ar fi yoursitename.com/index.php/mymodule/index
.
Sunând yoursitename.com/index.php/mymodule
sau yoursitename.com/index.php/mymodule/index
Magento va căuta acțiunea de indexare a fișierului de controler al modulului dvs. Ca atare, trebuie să creăm fișierul de controler.
Mergi la app / code / / Chiragdodia / Mymodule / controlere locale
și să creați fișier IndexController.php
cu următorul conținut.
Rețineți că numele și numele fiecărui fișier al fiecărui fișier sunt sensibile la minuscule în Magento Este foarte important să aveți grijă să vă numiți munca atunci când creați fișiere și clase.
Acum deschideți adresa URL
yoursite.com/index.php/mymodule/index
se va imprima "Bună ziua Tuturi + Lumea". Awesome - am terminat în sfârșit cu primul nostru modul hello world.Controlorul de expediere
Aici am extins clasa
Mage_Core_Controller_Front_Action
care conține toate metodele care se utilizează în rutarea adresei url. Numele clasei Magento reflectă locația fișierului de clasă. Deci, clasaMage_Core_Controller_Front_Action
locuieste in locatie Mage> Core> Controller> Front> Action.phpVezi numele de clasă al controlorului nostru care este
Chiragdodia_Mymodule_IndexController
. Controlerul Magento să fie numit în așa fel încât să reflecte(
tag) _ (Action Controllername) (controler de cuvinte cheie).
Chiragdodia_Mymodule
(am definit această etichetă în config.xml
) Controllername
= IndexControlor
cuvinte cheie Pe baza acestui model, numele controlorului nostru este Chiragdodia_Mymodule_IndexController
Acum, a se vedea modelul de adresă URL care urmează modelul de traseu de mai josyoursite.com/index.php/frontendname/actionControllername/actionmethod
Pe baza acestui model de adresă URL, URL-ul modulului nostru este yoursite.com/index.php/mymodule/index/index
. De asemenea, puteți să-l accesați utilizând yoursite.com/index.php/mymodule
pentru că de fiecare dată când nu ați specificat un actionController
sau actionmethod
nume, Magento încarcă în mod implicit controlerul index și acțiunea index.
Acum, să mai creăm încă o acțiune: testAction
.
Putem accesa testAction folosind adresa URL
yoursite.com/index.php/mymodule/index/test
.Așa cum am explicat mai devreme aici
Acesta este modul în care funcționează controlerul în Magento.
La început, poate fi dificil să înțelegi totul dintr-o dată, așa că am inclus întregul cod sursă în acest modul, astfel încât să îl poți revizui și să-ți implementezi propria lucrare în timp ce o folosești ca un ghid.
În partea următoare, vom completa câteva layout-uri în modulul nostru, creând aspect și blocând fișiere. Vom înțelege cum funcționează fișierele de layout în Magento și ce blocuri de rol joacă în contextul Magento.
Până atunci creați-vă propriul modul și spuneți-mi ce vă provoacă probleme.
Dacă încă nu sunteți sigur cum să continuați după ce ați citit acest tutorial, încercați să contactați unul dintre dezvoltatorii Magento din Envato Studio. Ei vă pot ajuta cu tot felul de probleme Magento, mari și mici. Iată câteva exemple:
Obțineți un site Magento înființat sau solicitați personalizare avansată, cum ar fi:
Acest furnizor va face oricare dintre următoarele:
Obțineți tema dvs. Magento personalizată la un preț rezonabil în doar o zi de întoarcere.
Acest furnizor oferă o serie de servicii Magento, printre care:
Dacă aceste soluții nu sunt potrivite pentru dvs., încercați una dintre cele zeci de alte disponibile pe Envato Studio.