Magento Custom Module Development

Magento tilpasset modulutvikling er en sentral del av Magento-utviklingen eller Magento-prosjektet, fordi du kanskje vil integrere din egen funksjonalitet / modul i ditt eksisterende Magento-prosjekt. 

I denne serien skal jeg dekke detaljer om Magento tilpasset modulutvikling.

Hvis du vil gå videre med Magento-utviklingen, sjekk ut det store utvalget av nyttige Magento-utvidelser på Envato Market.

Magento-utvidelser på Envato Market

I hele denne serien refererer jeg Magento Community Edition 1.7, selv om tilpassede modulstrukturer er de samme i alle versjoner av Magento. Før vi skal begynne den faktiske modulutviklingen, la oss raskt forstå grunnleggende strukturen i Magento. 

Når du installerer en ny Magento, vil du legge merke til følgende Magento katalogstruktur:

Introduksjon til Magento MVC Structure

Som alle andre hovedrammer som Joomla, CakePHP, CodeIgniter, etc., følger Magento også MVC-basert arkitektur, selv om dette er litt annerledes enn kjernen PHP MVC-arkitektur. Her skal jeg forklare forskjellen i Magento-arkitekturen ved å sammenligne den med enkel PHP MVC-arkitektur.

PHP MVC arkitektur

I det typiske MVC-mønsteret er strømmen av søknaden noe slikt:

  1. Det er hovedinngangspunktet - index.php - fra hvor hele app-rutemekanismen er bestemt.
  2. Basert på denne rutemekanismen og forespurte nettadressemønster, vil appen ringe til riktig kontroller.
  3. Kontrolleren kaller deretter de riktige visningene.
  4. Endelig samler visningsfilene dataene fra modellfiler og viser dataene.

Magento MVC arkitektur

Magento MVC-arkitektur legger til noen lag til MVC-mønsteret, men den grunnleggende strømmen av kontroll av et program er slik:

  1. Det er hovedinngangspunktet - index.php - fra hvor hele appen vil bli initialisert.
  2. Basen på den forespurte URL-passeren, vil bli kalt. 
  3. Controller definerer sidene og laster opp layoutfilene for disse sidene.
  4. Layout-filer forteller kontrollerne som blokkerer filer som skal brukes.
  5. Blokker filer samle dataene fra modeller og hjelpefiler og send det til malerfiler.
  6. Malerfiler mottar data og gjengir html.

Dette kan i utgangspunktet være vanskelig å forstå siden det inneholder noen ekstra lag. For å bli bedre kjent med strømmen av kontroll, la oss utvikle en tilpasset "Hello World" -modul.

Før du begynner med moduler

  • Jeg antar at du allerede har en arbeidskopi av Magento med versjon 1.7 eller 1.7+ (eller ellers som versjon spiller ingen rolle på dette stadiet)
  • Deaktiver hurtigbufferen. Slik deaktiverer du hurtigbufferen Gå til Magento Admin Panel> System> Cache Management> Velg all cache type fra venstre side avkrysningsbokser> Velg Action: deaktiver fra høyre øverste rullegardin> klikk Submit.

Strukturen til en Magento-modul

Kode bassenger

Magento inneholder tre typer kode bassenger hvor alle tilpassede og kjernemodulene i Magento er bosatt. 

  1. Kjernebassenger inneholder alle kjernemodulene som som standard kommer med en Magento-installasjon. Disse modulene er skrevet av Magento-utviklere. Det anbefales ikke å endre disse modulene fordi når du vil oppgradere Magento-installasjonen, vil alle kjernemodulene bli overskrevet og endringene dine vil gå tapt.
  2. Fellesskapspoolene inneholder alle modulene - det vil si egendefinerte moduler - som er utviklet av tredjepartsprogrammerere som skal installeres gjennom Magento Connect. Disse modulene utvider generelt kjernemoduler og tilbyr sin egen funksjonalitet som ofte kan brukes hvor som helst i Magento.
  3. Lokale bassenger inneholder all den egendefinerte modulen som skal brukes til et bestemt prosjekt, men blir ikke løst i Magento Connect

Dermed har vi to valg av bassenger: Fellesskap eller Lokal. Siden vi jobber med vårt eget prosjekt, skal vi bruke et lokalt basseng, men det er ingen begrensninger på bruk av fellesbassenget, enten.

Struktur

Magento-modulene består av følgende komponenter:

  • blokker inneholder funksjoner som brukes til å vise data i maler.
  • modeller inneholder forretningslogikken til modulene.
  • Ressursmodeller inneholder funksjoner som brukes til databaseinteraksjon.
  • Controllers definerer sideoppsett og blokkerer filer og lastes når en URL blir forespurt.
  • etc inneholder konfigurasjonsfiler i XML-formater som forteller Magento hvor mange filer moduler har og hvordan modulen samhandler.
  • Hjelpere inneholder funksjoner som brukes til å definere felles forretningslogikk (for eksempel bildeformatering, validering). Disse funksjonene kan brukes overalt på Magento-programmet
  • sql inneholder SQL-skript for å opprette, endre eller slette SQL-tabeller.

Modulnavn

Vi må gi navnet til vår modul. Vanligvis er Magento-modulnavnene laget av to deler: _Den beste fremgangsmåten for å gi en Magento-modul et navn er å velge som forfatter eller firmanavn og som et aktuelt modulnavn.

Basert på denne navngivningskonvensjonen, gir jeg vår modul den Chiragdodia_Mymodule Navn. Vi vil referere til dette navnet gjennom hele denne serien.

Kodeoppsett og konfigurering

 Lar oss lage kataloger basert på strukturen ovenfor. Gå til din Magento installasjonsretning, og naviger deretter til app / code / local og opprett katalogene som vist nedenfor.

Deretter skal vi konfigurere og aktivere modulen vår ved å opprette konfigurasjonsfil Chiragdodia_Mymodule.xml i app / etc / modulerkatalogDenne katalogen inneholder konfigurasjonsfiler for alle moduler.

    ekte lokal   

Denne filen vil fortelle Magento om plasseringen av modulen vår. I aktiv tag, vi har spesifisert ekte for å aktivere modulen vår. Hvis alt er riktig så langt, så finner du modulen din i Magento Admin Panel> System> Konfigurasjon> Avansert> Avansert> Deaktiver modulutgang liste. Herfra kan du aktivere og deaktivere modulen din.

Komme i gang: Utvikling

Neste vil vi opprette vår modulkonfigurasjonsfil. Denne filen vil fortelle Magento alt om modulen vår. Dette inkluderer hvor mange filer vår modul inneholder, hvilken type filer (modeller, hjelpere, databaseklasser) og så videre.

Gå til app / code / local / Chiragdodia / Mymodule / etcog opprett en config.xmlfil som vil inneholde følgende innhold

    0.1.0       standard  Chiragdodia_Mymodule mymodule      

La oss gå gjennom linje for linje for å forstå hver tag. Her er den første taggen som inneholder navnet og versjonen av modulen vår. Versjonsnummeret er svært viktig når det gjelder oppdatering av modulen, oppdater modulen.

De tag vil fortelle Magento om kontrolleren sendt. Inne i  tag, vi har definert som forteller Magento hvordan du får tilgang til våre kontroller via rutemekanismen. 

tag, vi har definert modulnavn i tag og frontend navn i . Ved å bruke et frontendnavn, kan vi få tilgang til modulen vår i frontend yoursitename.com/index.php/mymodule/index.

Ved å ringe yoursitename.com/index.php/mymodule eller yoursitename.com/index.php/mymodule/index Magento vil se etter indekshandling av modulens kontrollerfil. Som sådan må vi opprette vår kontrollerfil.

Gå til  app / kode / lokale / Chiragdodia / Mymodule / kontrollørerog opprett fil IndexController.phpmed følgende innhold.

Merk at hver fils navn og klassenavn er saksfølsomme i Magento. Det er veldig viktig at du tar vare på å navngi arbeidet ditt når du lager filer og klasser.

Nå åpne URL yoursite.com/index.php/mymodule/indexdet vil skrive ut "Hei tuts + Verden". Awesome - vi er endelig ferdig med vår første hei verdensmodul.

Controller Dispatch

Her har vi utvide klassenMage_Core_Controller_Front_Actionsom inneholder alle metodene som brukes i ruting av url. Magento klassenavn gjenspeiler plasseringen av klassefilen. Så klassen Mage_Core_Controller_Front_Actionligger på stedet Mage> Core> Controller> Front> Action.php

Se klassens navn på vår kontroller som er Chiragdodia_Mymodule_IndexController. Magento-kontrolleren til å bli navngitt på en slik måte at den reflekterer (tag) _ (handlingskontrollnavn) (søkeordkontrollør).

  • tag = Chiragdodia_Mymodule (vi har definert denne taggen config.xml)
  • Handling Controllername = Indeks
  • Action kontroller etterfulgt av Controller søkeord 

Basert på dette mønsteret, er navnet på vår kontroller Chiragdodia_Mymodule_IndexController

Se nå URL-mønsteret som følger nedenstående rutemønster
yoursite.com/index.php/frontendname/actionControllername/actionmethod

  • frontendname = minmodul
  • actionControllername = Index
  • actionmethodname = Indeks

Basert på dette nettadressemønsteret er modulens URL-adresse yoursite.com/index.php/mymodule/index/index. Du kan også få tilgang til den ved hjelp av yoursite.com/index.php/mymodule fordi når du ikke har spesifisert en actionController eller actionmethod navn, Magento laster indekskontrolleren og indeksaksjonen som standard.

La oss nå lage en annen handling: testAction .

Vi kan få tilgang til testAction ved hjelp av URL yoursite.com/index.php/mymodule/index/test.Som forklart tidligere her

  • frontendname = minmodul
  • actionControllername = Index
  • actionmethodname = test

Slik fungerer kontrolleren i Magento.

I begynnelsen kan det være vanskelig å forstå alt på en gang, så jeg har tatt med alle kildekoden til denne modulen, slik at du kan se gjennom det og gjennomføre ditt eget arbeid mens du bruker det som en veiledning.

Hva blir det neste?

I neste del skal vi fylle ut noen oppsett i modulen vår ved å lage layout og blokkere filer. Vi vil forstå hvordan layoutfilene fungerer i Magento, og hvilken rolle blokker spiller innenfor Magento-sammenhengen.

Inntil da lag din egen modul og gi meg beskjed om noe som gjør at du har problemer.

Trenger ekstra hjelp?

Hvis du fortsatt ikke er sikker på hvordan du går videre etter å ha lest denne opplæringen, kan du prøve å kontakte en av Magento-utviklerne på Envato Studio. De kan hjelpe deg med alle slags Magento-problemer, store og små. Her er noen eksempler:

1. Magento Alt-i-ett (Full Site Development / Tilpasning)

Få en Magento-nettside opprettet, eller be om avansert tilpasning som:

  • layout modifikasjon 
  • slider modifikasjon 
  • egendefinert meny 
  • fikse responsive problemer 
  • og mer

2. Magento Modul Utvikling og Site Development

Denne leverandøren vil gjøre noe av følgende:

  • utvikle en tilpasset modul
  • installer et Magento-tema
  • tilpass med identitetsdesignet ditt (logo, farge, font, bakgrunn) 
  • lag dine første 20 kategorier / underkategorier 
  • sette opp betalinger og lokale valutaer 
  • og mer

3. Magento Theme Customization

Få ditt Magento-tema tilpasset til en rimelig pris innen bare en dags turnaround.

4. Magento Theme Development, Installasjon, Extensions & Custom Work

Denne leverandøren tilbyr en rekke Magento-tjenester, inkludert:

  • tilpasset Magento webutvikling 
  • responsive Magento nettsteder 
  • tilpasset Magento tema utvikling 
  • modulutvikling 
  • handlekurvutvikling 
  • sikre betalingsgateway integrasjon

Hvis disse løsningene ikke passer deg, kan du prøve en av de mange andre som er tilgjengelige på Envato Studio.