Dezvoltarea modulelor personalizate Magento

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 Market

De-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:

Introducere în structura Magento MVC

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ă.

Arhitectura PHP MVC

În modelul tipic MVC, fluxul aplicației este ceva de genul:

  1. Există punctul principal de intrare - index.php - de unde este determinat întregul mecanism de direcționare a aplicațiilor.
  2. Pe baza acestui mecanism de rutare și a modelului de adresă URL solicitat, aplicația va apela controlerul corespunzător.
  3. Apoi, controlerul sună la vizualizările corespunzătoare.
  4. În cele din urmă, fișierele de vizualizare colectează datele din fișierele model și afișează datele.

Arhitectura Magento MVC

Arhitectura MVC a Magento adaugă câteva straturi modelului MVC, dar fluxul de bază al controlului unei aplicații este după cum urmează:

  1. Există punctul principal de intrare - index.php - de unde va fi inițializată întreaga aplicație.
  2. Baza pe controlerul corespunzător pentru URL-ul solicitat va fi apelată. 
  3. Controlerul definește paginile și încarcă fișierele de aspect pentru acele pagini.
  4. Fișierele de configurare indică controlorilor care blochează fișierele de utilizat.
  5. Blochează fișierele colectează datele din fișierele modelelor și ajutoarelor și le transmite fișierelor de șabloane.
  6. Șabloanele de fișiere primesc date și fac HTML.

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".

Înainte de a începe cu modulele

  • Presupun că aveți deja o copie de lucru Magento cu versiunea 1.7 sau 1.7+ (sau altfel ca versiune nu contează în acest stadiu)
  • Dezactivați memoria cache. Pentru a dezactiva cache-ul Du-te la Magento Admin Panel> Sistem> Gestionare cache> Selectați toate tipurile de cache din casetele de stânga> Selectați Acțiune: dezactivați din partea de sus dreapta sus> faceți clic pe Submit.

Structura unui modul Magento

Piscine pentru coduri

Magento conține trei tipuri de baze de cod în care se află toate modulele custom și core de Magento. 

  1. Piscinele de bază conțin toate modulele de bază care, în mod implicit, au o instalare Magento. Aceste module sunt scrise de dezvoltatorii Magento. Se recomandă să nu modificați aceste module, deoarece ori de câte ori actualizați instalarea Magento, toate modulele de bază vor fi suprascrise și modificările dvs. vor fi pierdute.
  2. Piscinele comunitare conțin toate modulele - adică module personalizate - care sunt dezvoltate de către programatori de la terți pentru a fi instalați prin Magento Connect. Aceste module extind, în general, modulele de bază și oferă propria lor funcționalitate, care poate fi folosită oriunde în Magento.
  3. Bazinele locale conțin toate modulele personalizate care vor fi utilizate pentru un anumit proiect, dar nu sunt citite în Magento Connect

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:

  • blocuri conține funcții care sunt utilizate pentru a afișa date în șabloane.
  • modele conține logica de afaceri a modulelor.
  • Modele de resurse conține funcții care sunt utilizate pentru interacțiunea bazei de date.
  • controlerele definește aspectul paginii și blochează fișierele și se încarcă atunci când este solicitată o adresă URL.
  • etc conține fișiere de configurare în formate XML care îi spune Magento câte module de fișiere au și modul în care interacționează modulul.
  • Helpers conțin funcții care sunt utilizate pentru definirea unei logici comune de afaceri (cum ar fi redimensionarea imaginii, validarea). Aceste funcții pot fi utilizate oriunde în aplicația Magento
  • sql conține script-uri SQL pentru a crea, modifica sau șterge tabele SQL.

Modularea numelor

Trebuie să oferim un nume modulului nostru. În general, numele modulelor Magento sunt alcătuite din două părți: _Se alege cea mai bună practică de a da un nume Magento unui nume 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.

Setarea și configurarea codului

 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 / moduledirectorAcest 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.

Noțiuni de bază: Dezvoltare

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.xmlfișier care va conține următorul conținut

    0.1.0       standard  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.phpcu 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/indexse 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 clasaMage_Core_Controller_Front_Actioncare conține toate metodele care se utilizează în rutarea adresei url. Numele clasei Magento reflectă locația fișierului de clasă. Deci, clasa Mage_Core_Controller_Front_Actionlocuieste in locatie Mage> Core> Controller> Front> Action.php

Vezi 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).

  • tag = Chiragdodia_Mymodule (am definit această etichetă în config.xml)
  • Acțiune Controllername = Index
  • Acționatorul de acțiune urmat de Controlor 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 jos
yoursite.com/index.php/frontendname/actionControllername/actionmethod

  • frontendname = mymodule
  • actionControllername = Index
  • actionmethodname = Index

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

  • frontendname = mymodule
  • actionControllername = Index
  • actionmethodname = test

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.

Ce urmeaza?

Î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.

Aveți nevoie de ajutor suplimentar?

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:

1. Magento All-in-One (dezvoltare / personalizare completă a site-ului)

Obțineți un site Magento înființat sau solicitați personalizare avansată, cum ar fi:

  • modificarea layout-ului 
  • modificarea culiselor 
  • meniu personalizat 
  • stabilirea unor aspecte receptive 
  • și altele

2. Dezvoltarea modulului Magento și dezvoltarea site-ului

Acest furnizor va face oricare dintre următoarele:

  • să dezvolte un modul personalizat
  • instalați o temă Magento
  • personalizați cu designul dvs. de identitate (logo, culoare, font, fundal) 
  • creați primele 20 de categorii / subcategorii 
  • să stabilească plăți și valute locale 
  • și altele

3. Personalizarea temei Magento

Obțineți tema dvs. Magento personalizată la un preț rezonabil în doar o zi de întoarcere.

4. Dezvoltarea, instalarea, extinderea și lucrarea personalizată a temei Magento

Acest furnizor oferă o serie de servicii Magento, printre care:

  • custom Magento dezvoltare web 
  • site-uri responsabile de Magento 
  • custom Magento temă de dezvoltare 
  • dezvoltarea de module 
  • dezvoltarea coșului de cumpărături 
  • siguranța integrării gateway-ului de plată

Dacă aceste soluții nu sunt potrivite pentru dvs., încercați una dintre cele zeci de alte disponibile pe Envato Studio.

Cod