Tilpasset blokkutvikling i Magento

I denne opplæringen skal vi utforske Magento-blokker, en av de viktigste komponentene i Magento-arkitekturen. Vi ser forskjellen mellom strukturelle og innholdsblokker. Jeg vil også demonstrere hvordan du kan lage tilpassede blokker programmatisk.

Hva er blokker i Magento?

I Magento-arkitekturen er en "Blokk" en av de første klasse elementene i strukturen av Magento-layoutene. Hver side i Magento er dekorert av "Layouts" -filen og innholdet er fylt opp av "Blokker" av de forskjellige modulene. Magento-blokkene er en veldig kraftig og fleksibel måte å plugge inn innholdet i allerede eksisterende layouter. På den annen side kan du også bruke layout XML-filer for enkelt å fjerne eller omplassere eksisterende blokker.

Det er ingen overraskelse at med tanke på fleksibiliteten til Magento-arkitekturen, kan du også utvikle dine egne blokker ved hjelp av en tilpasset modul i Magento. Si for eksempel at du ønsker å trekke et par spesialprodukter for den kommende festperioden, og du vil vise dem på forsiden. I så fall kan du enkelt oppnå oppgaven ved å implementere en egendefinert blokk. Og ja, det er også hovedmålet med denne opplæringen!

Strukturelle blokker versus innholdsblokker

Før vi går videre til vårt tilpassede blokkoppdrag, vil jeg gjerne forklare forskjellen mellom strukturelle og innholdsblokker. La oss få en rask titt på hver type blokk.

Strukturelle blokker

Vi kan si at "Strukturelle blokker" er beholderne som inneholder "Innholdsblokkene". Strukturelle blokker har ikke noe egentlig innhold å vise, men de viser igjen innholdsblokkene på slutten. Som navnet antyder, er de vant til å strukturere innholdet på hele siden.

For eksempel er "Header", "Footer", "Left" og "Right" strukturelle blokker i Magento. "Innholdsblokker" er tilordnet de forskjellige strukturelle stillingene i layouten på Magento-siden, som igjen viser det faktiske innholdet i innholdsblokkene.

Innholdsblokker

"Innholdsblokker" er den virkelige brannmakt, og genererer det faktiske innholdet på displayet. Som vi nettopp har diskutert i forrige avsnitt, må du tilordne innholdsblokken til en av strukturblokken for frontendisplayet. Det er noen andre måter som tillater oss å sette inn innholdsblokkene ved hjelp av korte koder, men vi får se mer om det senere.

Innholdsblokker kan være av noen form, fra en enkel statisk innholdsblokk til en liste over de nyeste produktene på hjemmesiden! Faktisk genereres innholdet av innholdsblokkene spredt over de forskjellige modulene i Magento.

Så nå skal du forstå den grunnleggende forskjellen mellom de to typer blokkene i Magento. Så la oss hoppe inn og starte den tilpassede blokkutviklingen!

Tilpasset blokkutvikling

Vi skal utvikle en veldig enkel tilpasset Magento-modul for utvikling av vår tilpassede blokk. Vår tilpassede blokk vil være en enkel blokk som viser de nyeste produktene som er tilgjengelige i butikken.

Jeg antar at du er kjent med grunnleggende strukturen og konvensjonene i Magento-modulfilene. Nå, la oss se filstrukturen vi må implementere for vår egendefinerte blokk.

  • app / etc / moduler / Envato_All.xml: Det er en fil som brukes til å aktivere vår egendefinerte modul.
  • app / code / local / Envato / Recentproducts / etc / config.xml: Det er en modulkonfigurasjonsfil.
  • app / code / local / Envato / Recentproducts / Modell / Recentproducts.php: Det er en modellfil som gir en rekke nyeste produkter.
  • app / code / local / Envato / Recentproducts / Block / Recentproducts.php: Det er hovedblokkfilen for vår egendefinerte blokk.
  • app / design / frontend / default / default / mal / recentproducts / recentproducts.phtml: Det er en malfil som inneholder XHTML-relaterte ting.

Sette opp filene

I henhold til Magento-konvensjonene må vi først opprette modulen enabler-filen. Skape app / etc / moduler / Envato_All.xml og lim inn følgende innhold i den filen. Vi har brukt Envato som vår modul namespace og Recentproducts som vårt modulnavn. Det vil aktivere vår Recentproducts modul som standard.

     ekte lokal   

Skape app / code / local / Envato / Recentproducts / etc / config.xml og lim inn følgende innhold i den filen. Vi har nettopp erklært modellen og blokkert klassenavnene i henhold til Magento-modulen XML-filkonvensjonene.

     1.0      Envato_Recentproducts_Block     Envato_Recentproducts_Model    

Nå opprett modellfilen på app / code / local / Envato / Recentproducts / Modell / Recentproducts.php. Lim inn følgende innhold i modellfilen.

getCollection () -> addAttributeToSelect ('*') -> setOrder ('entity_id', 'DESC') -> setPageSize (5); returnere $ produkter; 

Så som du kan se, har vi nettopp erklært en metode getRecentProducts som vil returnere de fem sist oppdaterte produktene.

Videre, opprett app / code / local / Envato / Recentproducts / Block / Recentproducts.php fil og sett inn følgende kode i den filen.

getRecentProducts (); foreach ($ produkter som $ produkt) $ arr_products [] = array ('id' => $ produkt -> getId (), 'navn' => $ produkt -> getName (), 'url' => $ produkt -> getProductUrl (),);  returner $ arr_products; 

I sammenheng med opplæringen er det en av de viktigste filene vi leter etter! Ja, det er en fil relatert til vår egendefinerte blokk.

I denne filen kaller vi modellmodellen vår getRecentProducts å laste rekkefølgen av produktene ved hjelp av Mage :: getModel skjønnhet Magento. Deretter vil vi iterere gjennom dataene og sette opp $ arr_products array som vil være nødvendig i vår blokkmalfil.

Til slutt må vi lage en malfil på app / design / frontend / default / default / mal / recentproducts / recentproducts.phtml. Den inneholder XHTML-koden relatert til produktvisningen.

getRecentProducts (); ?> 

Nylige produkter

">

Først henter vi produktserien ved hjelp av getRecentProducts blokkens metode. Når vi får det, gjentar vi bare gjennom dataene og utarbeider XHTML-koden for blokken vår. Det er så enkelt!

Vi er ferdig med vår egendefinerte blokkmodul, så i neste avsnitt ser vi hvordan vi kan bruke blokkkortkoder for å vise blokken vår på forsiden.

Testing Front-End

Som vi diskuterte tidligere, vises innholdsblokker ved å tilordne dem til en av strukturblokkene. Og ja, du kan tildele de egendefinerte blokkene på samme måte som de andre kjerneblokkene i Magento er tildelt, enten av layoutfiler eller CMS-sider.

Hvis du vil sette inn din egendefinerte blokk ved hjelp av oppsettoppdateringsfilen, kan du bruke følgende kode.

På den annen side, hvis du vil vise din egendefinerte blokk ved hjelp av CMS-siden, er koden du skal bruke.

block type = "recentproducts / recentproducts" name = "recentproducts_recentproducts" template = "nyligeprodukter / nyprodukts.phtml"

La oss se raskt hvordan det ser ut i frontenden når det settes inn på en av CMS-sidene. Logg inn på Magento back-end og gå til CMS> Sider, og legg til en ny CMS-side ved hjelp av Legg til ny side. Fyll inn den nødvendige informasjonen, og lim inn blokkkortkoden som vist på følgende skjermbilde.


Lagre siden og gå til forsiden for å se hvordan den ser ut!


Ser bra ut, ikke sant? Så det er det for nå, og jeg kommer tilbake med noen flere spennende ting. Elsker å høre tankene dine ved å bruke feedet under.