Het is altijd een belangrijke functie voor elk raamwerk om uitbreidbaarheid en schaalbaarheid in de kern zelf te ondersteunen. Het is zo waar voor Magento, waardoor programmeurs aangepaste extensies kunnen maken om te voldoen aan aangepaste vereisten, waardoor ze uitbreidbaar zijn. Aan de andere kant kunt u ook kernbestanden overschrijven om de stroom en het gedrag van de belangrijkste functies van Magento te wijzigen.
Er zijn verschillende manieren in Magento waarmee u kernbestanden kunt overschrijven. Een daarvan is de implementatie van het Event Observer Pattern. Met behulp van die methode definieert u waarnemers in uw module voor de gewenste evenementen en worden ze opgehaald wanneer gekoppelde evenementen in Magento worden besproken. Het is zeker een krachtige en standaardmanier om uw wijzigingen in de kernmodules van Magento aan te brengen. Dat gezegd hebbende, zijn er situaties waarin u denkt dat het geweldig zou zijn als u eenvoudig de kernfragmenten kon vervangen door uw bestanden. U kunt dit doen met behulp van een XML-configuratiebestand in uw aangepaste module.
In Magento zijn blokken primitieve bouwcomponenten voor elke lay-out aan de voorkant. Hoewel u het sjabloonbestand van elk blok met een aangepast thema kunt overschrijven om de visuele uitvoer te wijzigen, wilt u soms de logica van de kernblokcode wijzigen. In dat geval helpt het overschrijven van een kernblok met het blokbestand van uw aangepaste module echt om uw wijzigingen aan te brengen gemakkelijk.
In deze zelfstudie maken we een aangepaste module om te begrijpen hoe blok-overrider werkt in Magento. In de aangepaste module overschrijven we een productvermeldingsblok dat wordt weergegeven op de weergave Categoriepagina. Het negeren van werken door het instellen van bepaalde XML-tags volgens de conventies van Magento.
Ik neem aan dat je bekend bent met het maken van basismodules in Magento. Hier is een leuk artikel over de basisprincipes van het maken van aangepaste modules, voor het geval je er een kijkje zou willen nemen! Laten we meteen naar de inhoud van deze tutorial springen!
We zullen een eenvoudige, aangepaste module maken met de naam "Catalogus", die het belangrijkste productlijstblok (app / code / kern / Mage / Catalogus / Blok / Categorie / Weergave.php) in de weergave categoriepagina opheft. Hier is een lijst met de bestanden die nodig zijn voor de gewenste opstelling:
Eerst moeten we een module-enabler-bestand maken. Maak een bestand "app / etc / modules / Envato_All.xml" en plak de volgende inhoud in dat bestand. We hebben gebruikt Envato
als onze modulenaamruimte en Catalogus
als onze modulenaam. Hiermee wordt onze catalogusmodule standaard ingeschakeld.
waar lokaal
Vervolgens moeten we een moduleconfiguratiebestand maken. Maak "app / code / local / Envato / Catalog / etc / config.xml" en plak de volgende inhoud in dat bestand.
1.0 Envato_Catalog_Block_Category_View
In het begin van de module hebben we het versienummer van de module ingesteld met behulp van de
label. Daarna, de
en
tags worden gebruikt om het Magento-overschrijvingssysteem te informeren dat we een van de "blokken" van de kernmodule "Catalogus" zullen opheffen.
Verder, de
tag wordt gebruikt om een blokidentiteit te definiëren die zal worden opgeheven door de Envato_Catalog_Block_Category_View
klasse. Het is toegewezen aan een blokbestand "Category / View.php" onder de map "Block" van de module Catalog. Het belangrijkste om hier op te merken is dat we een directorystructuur volgen die lijkt op de kernmodule. Hoewel dat niet strikt noodzakelijk is, heeft het de voorkeur boven de verschillende directorystructuur om de leesbaarheid te behouden.
Ten slotte is het enige overgebleven ding om een blokklasse te definiëren Envato_Catalog_Block_Category_View
. Laten we een blokbestand maken "app / code / local / Envato / Catalog / Block / Category / View.php" en vullen met de volgende inhoud.
getChildHtml (Product_List);
We hebben de Envato_Catalog_Block_Category_View
klasse die de kern verlengt Mage_Catalog_Block_Category_View
blok klasse. U kunt dus elke methode van de basisklasse overschrijven en indien nodig nieuwe methoden maken.
In het bovenstaande voorbeeld, de getProductListHtml
methode is overschreven, zodat deze wordt aangeroepen in de weergave categoriepagina! U kunt de code volgens uw vereisten wijzigen.
Hoewel het een heel eenvoudig voorbeeld is, dient het om het kernblok te vervangen, en je kunt het aanpassen om de dingen complexer te maken en iets nuttiger te maken!
Vandaag, in het eerste artikel van deze serie, hebben we geleerd om de kernblokken van Magento te vervangen. In het volgende deel zal ik meer spannende dingen bedenken! Ik hoor graag uw opmerkingen en vragen in de onderstaande feed!