Magento-ontwikkeling van aangepaste modules is een kernonderdeel van elk Magento-project of Magento-project, omdat u in elk stadium uw eigen functionaliteit / module in uw bestaande Magento-project wilt integreren.
In deze serie ga ik de details van Magento-ontwikkeling van aangepaste modules bespreken.
Als je verder wilt gaan met je Magento-ontwikkeling, bekijk dan het uitgebreide aanbod handige Magento-extensies op Envato Market.
Magento-extensies op Envato MarketIn deze reeks verwijs ik Magento Community Edition 1.7, hoewel aangepaste module-structuren hetzelfde zijn in alle versies van Magento. Voordat we gaan beginnen we met de daadwerkelijke ontwikkeling van de module, laten we snel de basisstructuur van Magento begrijpen.
Wanneer u een nieuwe Magento installeert, ziet u de volgende Magento-directorystructuur:
Net als alle andere grote frameworks zoals Joomla, CakePHP, CodeIgniter, enz., Volgt Magento ook de MVC-gebaseerde architectuur hoewel dit een beetje anders is dan de kern-PHP MVC-architectuur. Hier zal ik het verschil in Magento-architectuur uitleggen door het te vergelijken met eenvoudige PHP MVC-architectuur.
In het typische MVC-patroon is de stroom van de toepassing ongeveer als volgt:
index.php
- van waaruit het volledige app-routeringsmechanisme wordt bepaald.Magento's MVC-architectuur voegt enkele lagen toe aan het MVC-patroon, maar de basisstroom van controle van een applicatie is als volgt:
index.php
- van waaruit de hele app wordt geïnitialiseerd.In eerste instantie kan dit moeilijk te begrijpen zijn, omdat het een paar extra lagen bevat. Om meer vertrouwd te raken met de stroom van controle, laten we een aangepaste "Hello World" -module ontwikkelen.
Magento bevat drie soorten codepools waarin de alle aangepaste en kernmodules van Magento zich bevinden.
We hebben dus twee keuze uit pools: Community of Local. Omdat we aan ons eigen project werken, gaan we een lokale pool gebruiken, hoewel er geen beperking is voor het gebruik van de community pool, ofwel.
Structuur
Magento-modules bestaan uit de volgende componenten:
We moeten onze module een naam geven. Over het algemeen bestaan Magento-modulenamen uit twee delen:
als auteur of bedrijfsnaam en
als een echte modulenaam.
Op basis van deze naamgevingsconventie, geef ik onze module de Chiragdodia_Mymodule naam. We zullen in deze serie naar deze naam verwijzen.
Laten we de mappen baseren op bovenstaande structuur. Ga naar uw installatierichting van Magento en navigeer vervolgens naar app / code / local
en maak de mappen zoals hieronder getoond.
Vervolgens zullen we onze module configureren en activeren door een configuratiebestand te maken Chiragdodia_Mymodule.xml
in de app / etc / modules
directory. Deze map bevat configuratiebestanden voor alle modules.
waar lokaal
Dit bestand vertelt Magento over de locatie van onze module. In de actief
tag, hebben we gespecificeerd waar
om onze module in te schakelen. Als alles tot nu toe correct is, dan vindt u uw module in de Magento Admin Panel> Systeem> Configuratie> Geavanceerd> Geavanceerd> Uitvoer modules uitschakelen lijst. Vanaf hier kunt u uw module inschakelen en uitschakelen.
Vervolgens maken we ons moduleconfiguratiebestand. Dit bestand zal Magento alles over onze module vertellen. Dit omvat het aantal bestanden dat onze module bevat, welk type bestanden (modellen, helpers, databaseklassen), enzovoort.
Ga naar app / code / local / Chiragdodia / Mymodule / etc
en maak een config.xml
bestand dat de volgende inhoud bevat
0.1.0 Chiragdodia_Mymodule mymodule
Laten we regel voor regel doorlopen om elke tag te begrijpen. Hier is de eerste tag
die de naam en versie van onze module bevat. Het versienummer is erg belangrijk als het gaat om het updaten van uw module update uw module.
De
tag vertelt Magento dat de controller is verzonden. Binnen in de
tag, hebben we gedefinieerd
die Magento vertelt hoe toegang te krijgen tot onze controllers via het routeringsmechanisme.
In de
tag, we hebben de modulenaam gedefinieerd in
tag en frontend naam in
. Door een frontendnaam te gebruiken, hebben we toegang tot onze module in frontend zoals yoursitename.com/index.php/mymodule/index
.
Door te bellen yoursitename.com/index.php/mymodule
of yoursitename.com/index.php/mymodule/index
Magento zoekt naar indexactie van het controllerbestand van uw module. Daarom moeten we ons controllerbestand maken.
Ga naar app / code / local / Chiragdodia / Mymodule / controllers
en maak een bestand IndexController.php
met de volgende inhoud.
Merk op dat de naam en klassenamen van elk bestand hoofdlettergevoelig zijn in Magento. Het is erg belangrijk dat je voorzichtig bent in het benoemen van je werk bij het maken van bestanden en klassen.
Open nu de URL
yoursite.com/index.php/mymodule/index
het zal afdrukken "Hallo tuts + World". Fantastisch - we zijn eindelijk klaar met onze eerste Hello World-module.Controller verzending
Hier hebben we de klas uitgebreid
Mage_Core_Controller_Front_Action
die alle methoden bevat die worden gebruikt bij het routeren van de URL. De Magento-klassenaam geeft de locatie van het klassenbestand weer. Dus de klasMage_Core_Controller_Front_Action
bevindt zich op locatie Mage> Core> Controller> Voorzijde> Action.phpZie de klassenaam van onze controller die dat is
Chiragdodia_Mymodule_IndexController
. Magento-controller die op zo'n manier moet worden benoemd dat deze wordt weerspiegeld(
tag) _ (Action Control-naam) (trefwoord Controller).
Chiragdodia_Mymodule
(we hebben deze tag gedefinieerd in config.xml
) Controllername
= Indexcontroleur
trefwoord Op basis van dit patroon is de naam van onze controller Chiragdodia_Mymodule_IndexController
Zie nu het URL-patroon dat het onderstaande routepatroon volgtyoursite.com/index.php/frontendname/actionControllername/actionmethod
Op basis van dit URL-patroon is de URL van onze module yoursite.com/index.php/mymodule/index/index
. Je hebt er ook toegang toe via yoursite.com/index.php/mymodule
omdat wanneer je geen een hebt gespecificeerd ActionController
of actionmethod
naam, Magento laadt standaard de indexcontroller en de indexactie.
Laten we nu nog een actie maken: testAction
.
We kunnen toegang krijgen tot de testactie via URL
yoursite.com/index.php/mymodule/index/test
.Zoals eerder hier uitgelegd
Dit is hoe de controller werkt in Magento.
In eerste instantie kan het moeilijk zijn alles in één keer te begrijpen, dus heb ik alle broncode aan deze module toegevoegd, zodat je deze kunt beoordelen en je eigen werk kunt implementeren terwijl je het als leidraad gebruikt.
In het volgende deel gaan we enkele lay-outs in onze module invullen door lay-out- en blokbestanden te maken. We zullen begrijpen hoe de lay-outsbestanden in Magento werken en welke rol spelen blokkeert binnen de context van Magento.
Maak tot dan uw eigen module en laat me alles weten wat u problemen bezorgt.
Als je na het lezen van deze tutorial nog steeds niet zeker weet hoe je verder moet gaan, neem dan contact op met een van de Magento-ontwikkelaars op Envato Studio. Ze kunnen u helpen met allerlei Magento-problemen, groot en klein. Hier zijn een paar voorbeelden:
Download een Magento-website of vraag geavanceerde aanpassingen aan, zoals:
Deze provider doet een van de volgende dingen:
Krijg uw Magento-thema aangepast aan een redelijke prijs binnen slechts een dagomloop.
Deze provider biedt een scala aan Magento-services, waaronder:
Als deze oplossingen niet de juiste zijn, probeer dan een van de vele anderen die beschikbaar zijn op Envato Studio.