Magento core bestanden overschrijven

Magento is meer dan een ecommerce platform, het is een geweldig framework gebaseerd op het Zend Framework. Een van de betere features van Magento is modulariteit (beter dan in ZF) en de mogelijkheid om core classes te overschrijven.

Wat kun je overschrijven?

photo credit: hellogeri via photopin cc

photo credit: hellogeri via photopin cc

Je kunt blokken, modellen en helpers overschrijven door gebruik te maken XML configuratie bestanden. Op deze manier kun je erg makkelijk nieuwe functionaliteiten toevoegen met behulp van je eigen module. Het grootste voordeel is dat je core bestanden intact laat, en dit is erg handig wanneer je Magento gaat bijwerken.

Stel je voor: je wil graag een nieuwe methode toevoegen aan de Mage_Customer_Model_Customer class toevoegen, dan kun je dit bewerkstelligen door het aanmaken van je eigen class. Bijvoorbeeld: Marcobax_Customer_Model_Customer. Hiervoor is het nodig om een module te hebben in je local codePool, hieronder de mappenstructuur:

app/code/local/Marcobax/Customer/ – Bevat module bestanden
app/code/local/Marcobax/Customer/etc/ – Bevat de configuratiebestanden
app/code/local/Marcobax/Customer/Model/ – Hier plaatsen we de modellen

De class Marcobax_Customer_Model_Customer zal dus geplaatst worden in een bestand met de naam: Customer.php in de map: app/code/local/Marcobax/Customer/Model/

Door een Magento rewrite is dus een manier om in Magento core classes te overschrijven. Deze pas je toe door in config.xml van je module onderstaande code te plaatsen:

 

Wat nog rest is de module te activeren in: app/etc/modules/Marcobax_Customer.xml Maak dit bestand aan en plaats vervolgens onderstaande code daarin:

Je kunt nu de standaard Magento customer objecten aanroepen middels:

Deze methode zal een object retourneren met een instantie van: Marcobax_Customer_Model_Customer wanneer deze class is gedefineerd in: app/code/local/Marcobax/Customer/Model/Customer.php.

Je kunt nu in het bestand: app/code/local/Marcobax/Customer/Model/Customer.php een eigen methode aanmaken, bijvoorbeeld:

je kunt deze aanroepen via:

Succes!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *