Magento Custom Module Development

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 Market

In 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:

Introductie tot Magento MVC Structure

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.

PHP MVC-architectuur

In het typische MVC-patroon is de stroom van de toepassing ongeveer als volgt:

  1. Er is een centraal toegangspunt - index.php - van waaruit het volledige app-routeringsmechanisme wordt bepaald.
  2. Op basis van dit routeringsmechanisme en aangevraagd URL-patroon, zal de app de juiste controller bellen.
  3. De controller roept vervolgens de juiste weergaven op.
  4. Ten slotte verzamelen de weergavebestanden de gegevens uit modelbestanden en geven ze de gegevens weer.

Magento MVC-architectuur

Magento's MVC-architectuur voegt enkele lagen toe aan het MVC-patroon, maar de basisstroom van controle van een applicatie is als volgt:

  1. Er is een centraal toegangspunt - index.php - van waaruit de hele app wordt geïnitialiseerd.
  2. Base op de gevraagde URL, de juiste controller wordt gebeld. 
  3. Controller definieert de pagina's en laadt de lay-outbestanden voor die pagina's.
  4. Lay-outbestanden vertellen de controllers welke bestanden blokkeren om te gebruiken.
  5. Bestanden blokkeren verzamelen de gegevens van modellen en helpers-bestanden en geven deze door aan sjabloontoepassingen.
  6. Sjablonenbestanden ontvangen gegevens en geven html.

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.

Voordat u met modules begint

  • Ik ga ervan uit dat je al een werkkopie van Magento hebt met versie 1.7 of 1.7+ (of anders als versie maakt in dit stadium niet uit)
  • Schakel de cache uit. Om de cache uit te schakelen Ga naar Magento Admin Panel> Systeem> Cachebeheer> Selecteer alle cache type van linkerkant selectievakjes> Selecteer actie: uitschakelen van rechtsboven in de vervolgkeuzelijst> klik op Verzenden.

De structuur van een Magento-module

Code Pools

Magento bevat drie soorten codepools waarin de alle aangepaste en kernmodules van Magento zich bevinden. 

  1. Core-pools bevatten alle kernmodules die standaard worden geleverd met een Magento-installatie. Deze modules zijn geschreven door Magento-ontwikkelaars. Het wordt aangeraden deze modules niet te wijzigen, want wanneer u uw Magento-installatie gaat upgraden, worden alle kernmodules overschreven en gaan uw wijzigingen verloren.
  2. Community-pools bevatten alle modules, dat wil zeggen aangepaste modules, die door externe programmeurs zijn ontwikkeld om via Magento Connect te worden geïnstalleerd. Deze modules breiden over het algemeen kernmodules uit en bieden hun eigen functionaliteit die vaak overal in Magento kan worden gebruikt.
  3. Lokale pools bevatten alle aangepaste modules die voor een bepaald project zullen worden gebruikt, maar die niet worden gelezen in Magento Connect

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:

  • Blocks bevatten functies die worden gebruikt om gegevens in sjablonen weer te geven.
  • modellen bevatten de bedrijfslogica van modules.
  • Resource-modellen bevat functies die worden gebruikt voor database-interactie.
  • Controllers definieert pagina-indeling en blokkeert bestanden en wordt geladen wanneer een URL wordt aangevraagd.
  • enz bevat configuratiebestanden in XML-formaten die Magento vertellen hoeveel bestandsmodules hebben en hoe de module samenwerkt.
  • helpers bevatten functies die worden gebruikt voor het definiëren van algemene bedrijfslogica (zoals het wijzigen van de grootte van afbeeldingen, validatie). Deze functies kunnen overal in de Magento-applicatie worden gebruikt
  • sql bevat SQL-scripts om SQL-tabellen te maken, wijzigen of verwijderen.

Module Naming

We moeten onze module een naam geven. Over het algemeen bestaan ​​Magento-modulenamen uit twee delen: _De beste methode om een ​​Magento-module een naam te geven, is kiezen 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.

Code instellen en configureren

 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 / modulesdirectoryDeze 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.

Aan de slag: ontwikkeling

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 / etcen maak een config.xmlbestand dat de volgende inhoud bevat

    0.1.0       standaard-  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 / controllersen maak een bestand IndexController.phpmet 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/indexhet zal afdrukken "Hallo tuts + World". Fantastisch - we zijn eindelijk klaar met onze eerste Hello World-module.

Controller verzending

Hier hebben we de klas uitgebreidMage_Core_Controller_Front_Actiondie alle methoden bevat die worden gebruikt bij het routeren van de URL. De Magento-klassenaam geeft de locatie van het klassenbestand weer. Dus de klas Mage_Core_Controller_Front_Actionbevindt zich op locatie Mage> Core> Controller> Voorzijde> Action.php

Zie 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).

  • tag = Chiragdodia_Mymodule (we hebben deze tag gedefinieerd in config.xml)
  • Actie Controllername = Index
  • Actiecontroller gevolgd door de controleur trefwoord 

Op basis van dit patroon is de naam van onze controller Chiragdodia_Mymodule_IndexController

Zie nu het URL-patroon dat het onderstaande routepatroon volgt
yoursite.com/index.php/frontendname/actionControllername/actionmethod

  • frontendname = mymodule
  • actionControllername = Index
  • actionmethodname = Index

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

  • frontendname = mymodule
  • actionControllername = Index
  • actionmethodname = test

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.

Wat is het volgende?

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.

Heb je extra hulp nodig?

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:

1. Magento All-in-One (volledige site-ontwikkeling / maatwerk)

Download een Magento-website of vraag geavanceerde aanpassingen aan, zoals:

  • lay-out wijziging 
  • sliders modificatie 
  • Aangepaste menu 
  • het oplossen van responsieve problemen 
  • en meer

2. Ontwikkeling en ontwikkeling van Magento-modules

Deze provider doet een van de volgende dingen:

  • een aangepaste module ontwikkelen
  • installeer een Magento-thema
  • aanpassen met uw identiteit ontwerp (logo, kleur, lettertype, achtergrond) 
  • maak je eerste 20 categorieën / subcategorieën 
  • stel betalingen en lokale valuta's in 
  • en meer

3. Magento Theme Customization

Krijg uw Magento-thema aangepast aan een redelijke prijs binnen slechts een dagomloop.

4. Magento Theme Development, Installation, Extensions & Custom Work

Deze provider biedt een scala aan Magento-services, waaronder:

  • aangepaste Magento-webontwikkeling 
  • responsieve Magento-sites 
  • aangepaste Magento-thema-ontwikkeling 
  • module ontwikkeling 
  • winkelwagen ontwikkeling 
  • veilige integratie van betalingsgateway

Als deze oplossingen niet de juiste zijn, probeer dan een van de vele anderen die beschikbaar zijn op Envato Studio.