Aangepaste blokontwikkeling in Magento

In deze tutorial gaan we Magento-blokken verkennen, een van de essentiële componenten van de Magento-architectuur. We zullen het verschil zien tussen structurele en inhoudsblokken. Ik zal ook laten zien hoe je programmatisch aangepaste blokken kunt maken.

Wat zijn blokken in Magento?

In de Magento-architectuur is een 'blok' een van de eerste klasse-elementen in de structuur van Magento-lay-outs. Elke pagina in Magento wordt gedecoreerd door het bestand "Layouts" en de inhoud wordt opgevuld door de "Blokken" van de verschillende modules. Magento-blokken zijn een zeer krachtige en flexibele manier om uw inhoud in de reeds bestaande lay-outs te pluggen. Aan de andere kant kunt u ook lay-out XML-bestanden gebruiken om bestaande blokken gemakkelijk te verwijderen of te verplaatsen.

Het is geen verrassing dat, gezien de flexibiliteit van de Magento-architectuur, je ook je eigen blokken kunt ontwikkelen met behulp van een aangepaste module in Magento. Stel dat u bijvoorbeeld een paar speciale producten voor de aanstaande feestperiode wilt trekken en deze op de voorpagina wilt weergeven. In dat geval kunt u de taak eenvoudig volbrengen door een aangepast blok te implementeren. En ja, het is ook het belangrijkste doel van deze tutorial!

Structurele blokken versus inhoudsblokken

Voordat we verdergaan met onze aangepaste blokmissie, wil ik het verschil tussen structurele blokken en inhoudsblokken uitleggen. Laten we elk type blok snel bekijken.

Structurele blokken

We zouden kunnen zeggen dat "structurele blokken" de containers zijn die de "inhoudsblokken" bevatten. Structurele blokken zelf hebben geen echte inhoud om weer te geven, maar ze tonen op hun beurt de inhoudsblokken aan het einde. Zoals de naam al doet vermoeden, worden ze gebruikt om de inhoud van de hele pagina te structureren.

"Header", "Footer", "Left" en "Right" zijn bijvoorbeeld structurele blokken in Magento. "Inhoudsblokken" worden toegewezen aan de verschillende structurele posities van de lay-out van de Magento-pagina, die op zijn beurt de werkelijke inhoud van de inhoudsblokken weergeeft.

Inhoudsblokken

"Inhoudsblokken" zijn de echte vuurkracht, die de werkelijke inhoud voor het display genereren. Zoals we zojuist in de vorige sectie hebben besproken, moet u het inhoudsblok toewijzen aan een van de structurele blokken voor het front-end display. Er zijn nog andere manieren waarop we de inhoudsblokken kunnen invoegen met behulp van korte codes, maar daarover later meer.

Inhoudsblokken kunnen van elke vorm zijn, van een eenvoudig blok met statische inhoud tot een lijst met de meest recente producten op de startpagina! In feite wordt het grootste deel van de inhoud gegenereerd door de inhoudsblokken verspreid over de verschillende modules in Magento.

Dus nu zou je het fundamentele verschil tussen de twee soorten blokken in Magento moeten begrijpen. Laten we dus beginnen met de ontwikkeling van aangepaste blokken!

Aangepaste blokontwikkeling

We gaan een zeer eenvoudige Magento-module ontwikkelen voor de ontwikkeling van ons aangepaste blok. Ons aangepast blok zal een eenvoudig blok zijn met de meest recente producten die beschikbaar zijn in de winkel.

Ik ga ervan uit dat je bekend bent met de basisstructuur en conventies van de Magento modulebestanden. Laten we nu kijken naar de bestandsstructuur die we moeten implementeren voor ons aangepaste blok.

  • app / etc / modules / Envato_All.xml: Het is een bestand dat wordt gebruikt om onze aangepaste module in te schakelen.
  • app / code / local / Envato / Recentproducts / etc / config.xml: Het is een module-configuratiebestand.
  • app / code / local / Envato / Recentproducts / Model / Recentproducts.php: Het is een modelbestand dat de reeks meest recente producten biedt.
  • app / code / local / Envato / Recentproducts / Block / Recentproducts.php: Het is het belangrijkste blokbestand voor ons aangepaste blok.
  • app / design / frontend / default / default / template / recentproducts / recentproducts.phtml: Het is een sjabloonbestand dat de XHTML-gerelateerde dingen bevat.

De bestanden instellen

Volgens de Magento-conventies moeten we eerst het module-enabler-bestand maken. creëren app / etc / modules / Envato_All.xml en plak de volgende inhoud in dat bestand. We hebben gebruikt Envato als onze modulenaamruimte en Recente producten als onze modulenaam. Het zal ons in staat stellen Recente producten module standaard.

     waar lokaal   

creëren app / code / local / Envato / Recentproducts / etc / config.xml en plak de volgende inhoud in dat bestand. We hebben zojuist het model gedeclareerd en klassennamen geblokkeerd volgens de XML-bestandsconventies van de Magento-module.

     1.0      Envato_Recentproducts_Block     Envato_Recentproducts_Model    

Maak nu het modelbestand aan app / code / local / Envato / Recentproducts / Model / Recentproducts.php. Plak de volgende inhoud in het modelbestand.

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

Zoals u kunt zien, hebben we zojuist een methode verklaard getRecentProducts waarmee de vijf laatst toegevoegde producten worden geretourneerd.

Verder, maak de app / code / local / Envato / Recentproducts / Block / Recentproducts.php bestand en voeg de volgende code in dat bestand in.

getRecentProducts (); foreach ($ producten als $ product) $ arr_products [] = array ('id' => $ product -> getId (), 'name' => $ product -> getName (), 'url' => $ product -> getProductUrl (),);  return $ arr_products; 

In de context van de tutorial is dit een van de belangrijkste bestanden die we zoeken! Ja, het is een bestand met betrekking tot ons aangepaste blok.

In dit bestand zullen we onze modelmethode noemen getRecentProducts om de array van de producten te laden met behulp van de Mage :: getModel schoonheid van Magento. Vervolgens herhalen we de gegevens en stellen we de $ arr_products array die nodig is in ons blok sjabloonbestand.

Ten slotte moeten we een sjabloonbestand maken bij app / design / frontend / default / default / template / recentproducts / recentproducts.phtml. Het bevat de XHTML-code die gerelateerd is aan het display van het product.

getRecentProducts (); ?> 

recente producten

">

Ten eerste halen we de products-array op met behulp van de getRecentProducts methode van het blok. Zodra we dat hebben, herhalen we eenvoudigweg de gegevens en bereiden we de XHTML-code voor op ons blok. Zo simpel is het!

We zijn klaar met onze aangepaste blokmodule, dus in het volgende gedeelte zullen we zien hoe we de blokkorte codes kunnen gebruiken om ons blok op de voorpagina's weer te geven.

De voorkant testen

Zoals we eerder hebben besproken, worden inhoudsblokken weergegeven door ze toe te wijzen aan een van de structurele blokken. En ja, u kunt de aangepaste blokken op dezelfde manier toewijzen als de andere kernblokken in de Magento worden toegewezen, hetzij door lay-outbestanden of CMS-pagina's..

Als u uw aangepast blok wilt invoegen met behulp van het updatebewerkingsbestand, kunt u de volgende code gebruiken.

Aan de andere kant, als u uw aangepaste blok wilt weergeven met behulp van de CMS-pagina, dan is hier de code die u moet gebruiken.

block type = "latestproducts / recentproducts" name = "recentproducts_recentproducts" template = "recentproducts / recentproducts.phtml"

Laten we snel zien hoe het er aan de voorkant uitziet wanneer het via een van de CMS-pagina's wordt ingevoerd. Log in op uw Magento back-end en ga naar CMS> Pagina's, en voeg een nieuwe CMS-pagina toe met behulp van Nieuwe pagina toevoegen. Vul de vereiste informatie in en plak de korte code van het blok zoals weergegeven in de volgende schermafbeelding.


Sla de pagina op en ga naar de voorkant om te zien hoe het eruit ziet!


Ziet er goed uit, toch? Dus dat is het voor nu, en ik kom terug met nog meer spannende dingen. Graag je gedachten horen via de onderstaande feed.