Magento Custom Module Development

Magento anpassad modulutveckling är en kärna del av varje Magento-utvecklings- eller Magento-projekt, eftersom du på något stadium kanske vill integrera din egen funktionalitet / modul i ditt befintliga Magento-projekt. 

I denna serie kommer jag att täcka detaljerna i Magento anpassad modulutveckling.

Om du vill gå vidare med din Magento-utveckling, kolla in det stora utbudet av användbara Magento-tillägg på Envato Market.

Magento förlängningar på Envato Market

I hela denna serie hänvisar jag till Magento Community Edition 1.7, men anpassade modulstrukturer är desamma i alla versioner av Magento. Innan vi går ska vi börja den verkliga modulutvecklingen, låt oss snabbt förstå den grundläggande strukturen i Magento. 

När du installerar en ny Magento kommer du att märka följande Magento katalogstruktur:

Introduktion till Magento MVC Structure

Liksom alla andra stora ramar som Joomla, CakePHP, CodeIgniter, etc. följer Magento också den MVC-baserade arkitekturen, men detta är lite annorlunda än den centrala PHP MVC-arkitekturen. Här ska jag förklara skillnaden i Magento-arkitekturen genom att jämföra den med enkel PHP MVC-arkitektur.

PHP MVC arkitektur

I det typiska MVC-mönstret är applikationsflödet något som detta:

  1. Det finns huvudingångspunkten - index.php - varifrån hela app routing mekanismen är bestämd.
  2. Baserat på denna routningsmekanism och det begärda webbadressmönstret kommer appen att ringa till lämplig kontroller.
  3. Kontrollenheten ringer då de lämpliga vyerna.
  4. Slutligen samlar visningsfilerna data från modellfiler och visar data.

Magento MVC arkitektur

Magento MVC-arkitektur lägger till några lager till MVC-mönstret, men det grundläggande flödet av kontroll av en applikation är så här:

  1. Det finns huvudingångspunkten - index.php - varifrån hela appen kommer att initieras.
  2. Basen på den begärda webbadressen lämplig kontrollant kommer att kallas. 
  3. Controller definierar sidorna och laddar upp layoutfilerna för dessa sidor.
  4. Layout-filer berättar de kontrollerare som blockerar filer som ska användas.
  5. Blockera filer samlar in data från modeller och hjälpfiler och skickar dem till mallar filer.
  6. Mallar filer tar emot data och gör html.

Inledningsvis kan detta vara svårt att förstå eftersom det innehåller några extra lager. För att bli mer bekant med flödet av kontroll, låt oss utveckla en anpassad "Hello World" -modul.

Innan du börjar med moduler

  • Jag antar att du redan har en arbetskopia av Magento med version 1.7 eller 1.7+ (eller annars som version spelar ingen roll i detta skede)
  • Inaktivera cacheminnet. Så här inaktiverar du cachen Gå till Magento administratörspanel> System> Cachemanagement> Markera all cachetyp från kryssrutor i vänster sida> Välj Åtgärd: inaktivera från höger högsta nedrullning> klicka på Skicka.

Strukturen i en Magento-modul

Kod Pools

Magento innehåller tre typer av kodpooler där alla anpassade och kärnmodulerna i Magento är bosatta. 

  1. Core-poolerna innehåller alla kärnmodulerna som vanligtvis levereras med en Magento-installation. Dessa moduler är skrivna av Magento-utvecklare. Det rekommenderas att inte modifiera dessa moduler eftersom när du kommer att uppgradera din Magento-installation, kommer alla kärnmoduler att skrivas över och dina ändringar kommer att gå vilse.
  2. Gemensam pooler innehåller alla moduler - det vill säga anpassade moduler - som utvecklas av programvaror från tredje part som ska installeras via Magento Connect. Dessa moduler omfattar i allmänhet kärnmoduler och erbjuder sin egen funktionalitet som ofta kan användas var som helst i Magento.
  3. Lokala pooler innehåller all den anpassade modulen som ska användas för ett visst projekt men återlämnas inte i Magento Connect

Således har vi två val av pooler: Community eller Local. Eftersom vi arbetar på vårt eget projekt ska vi använda en lokal pool, men det finns inga begränsningar för att använda gemenskapens pool, antingen.

Strukturera

Magento-modulerna består av följande komponenter:

  • Blocks innehåller funktioner som används för att visa data i mallar.
  • modeller innehåller modulernas affärslogik.
  • Resursmodeller innehåller funktioner som används för databasinteraktion.
  • controllers definierar sidlayout och blockerar filer och laddas när en URL begärs.
  • etc innehåller konfigurationsfiler i XML-format som berättar Magento hur många filer moduler har och hur modulen interagerar.
  • hjälpare innehåller funktioner som används för att definiera gemensam affärslogik (till exempel bildändring, validering). Dessa funktioner kan användas överallt i Magento-applikationen
  • sQL innehåller SQL-skript för att skapa, modifiera eller ta bort SQL-tabeller.

Modul Namn

Vi måste ange vår modul. Generellt är Magento-modulnamnen gjorda av två delar: _Det bästa valet att ge en Magento-modul ett namn är att välja som författare eller företagsnamn och som ett aktuellt modulnamn.

Baserat på den här namngivningskonventionen ger jag vår modul den Chiragdodia_Mymodule namn. Vi kommer att referera till detta namn i hela serien.

Kodinställning och konfiguration

 Låter skapa kataloger baserar sig på ovanstående struktur. Gå till din Magento installationsriktning och navigera till app / code / local och skapa kataloger enligt nedan.

Därefter kommer vi att konfigurera och aktivera vår modul genom att skapa config-fil Chiragdodia_Mymodule.xml i app / etc / moduleskatalogDen här katalogen innehåller config-filer för alla moduler.

    Sann lokal   

Den här filen kommer att berätta Magento om placeringen av vår modul. I aktiva tagg, vi har angivit Sann för att aktivera vår modul. Om allt är korrekt hittills kommer du hitta din modul i Magento Admin Panel> System> Konfiguration> Avancerat> Avancerat> Inaktivera modulutgång lista. Härifrån kan du aktivera och inaktivera din modul.

Komma igång: Utveckling

Nästa kommer vi att skapa vår modulkonfigurationsfil. Den här filen kommer att berätta Magento allt om vår modul. Detta inkluderar hur många filer vår modul innehåller, vilken typ av filer (modeller, hjälpare, databasklasser) och så vidare.

Gå till app / code / local / Chiragdodia / Mymodule / etcoch skapa en config.xmlfil som innehåller följande innehåll

    0.1.0       standard-  Chiragdodia_Mymodule mymodule      

Låt oss gå igenom rad för rad för att förstå varje tagg. Här är den första taggen som innehåller namnet och versionen av vår modul. Versionsnumret är mycket viktigt när det gäller att uppdatera modulen, uppdatera modulen.

De tagg kommer att berätta Magento om den skickade kontrollenheten. Inuti  tagg, vi har definierat som berättar Magento hur man får åtkomst till våra styrenheter via routemekanismen. 

tagg, vi har definierat modulnamn i tagga och frontend namn i . Genom att använda ett frontendnamn kan vi komma åt vår modul i frontend som yoursitename.com/index.php/mymodule/index.

Genom att ringa yoursitename.com/index.php/mymodule eller yoursitename.com/index.php/mymodule/index Magento letar efter indexåtgärder av din modulens kontrollfil. Som sådan måste vi skapa vår kontrollerfil.

Gå till  app / code / local / Chiragdodia / Mymodule / controllersoch skapa fil IndexController.phpmed följande innehåll.

Observera att varje fils namn och klassnamn är skiftlägeskänsliga i Magento. Det är väldigt viktigt att du tar hand om namnet på ditt arbete när du skapar filer och klasser.

Öppna nu webbadressen yoursite.com/index.php/mymodule/indexdet kommer att skrivas ut "Hello Tuts + World". Awesome - vi är äntligen färdiga med vår första hej världsmodul.

Controller Dispatch

Här har vi förlänga klassenMage_Core_Controller_Front_Actionsom innehåller alla metoder som används vid routning av webbadressen. Magento klassnamn återspeglar platsen för klassfilen. Så klassen Mage_Core_Controller_Front_Actionligger i plats Mage> Core> Controller> Front> Action.php

Se klassens namn på vår controller som är Chiragdodia_Mymodule_IndexController. Magento controller som ska namnges på ett sådant sätt att det speglar (tagg) _ (åtgärdskontrollnamn) (nyckelordskontroller).

  • tag = Chiragdodia_Mymodule (vi har definierat den här taggen config.xml)
  • Verkan Controllername = Index
  • Action kontroller följt av Kontrollant nyckelord 

Baserat på detta mönster är namnet på vår controller Chiragdodia_Mymodule_IndexController

Se nu URL-mönstret som följer rutrutan nedan
yoursite.com/index.php/frontendname/actionControllername/actionmethod

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

Baserat på detta URL-mönster är vår moduls URL-adress yoursite.com/index.php/mymodule/index/index. Du kan också få tillgång till den med yoursite.com/index.php/mymodule för när du inte har angett en actionController eller actionmethod namn, Magento laddar indexkontrollen och indexåtgärder som standard.

Låt oss nu skapa ytterligare en åtgärd: testAction .

Vi kan komma åt testAction med URL yoursite.com/index.php/mymodule/index/test.Som förklaras tidigare här

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

Så här fungerar styrenheten i Magento.

Först kan det vara svårt att förstå allt på en gång så jag har inkluderat all källkod till den här modulen så att du kan granska det och genomföra ditt eget arbete medan du använder det som en guide.

Vad kommer härnäst?

I nästa del ska vi fylla i några layouter i vår modul genom att skapa layout och blockera filer. Vi kommer att förstå hur layoutfilerna fungerar i Magento och vilken roll som blockerar spel inom Magento.

Fram till dess skapa din egen modul och låt mig veta vad som gör dig besvärlig.

Behöver extra hjälp?

Om du fortfarande inte är säker på hur du går vidare efter att ha läst den här handledningen, kan du kontakta en av Magento-utvecklarna på Envato Studio. De kan hjälpa dig med alla typer av Magento-problem, stora och små. Här är några exempel:

1. Magento All-in-One (Fullständig webbplatsutveckling / anpassning)

Få en Magento-webbplats upprättad, eller begära avancerad anpassning, till exempel:

  • layout modifiering 
  • reglaget modifiering 
  • anpassad meny 
  • fixa responsiva problem 
  • och mer

2. Magento Modulutveckling och Site Development

Den här leverantören gör något av följande:

  • utveckla en anpassad modul
  • installera ett Magento-tema
  • skräddarsy med din identitetsdesign (logotyp, färg, typsnitt, bakgrund) 
  • skapa dina första 20 kategorier / underkategorier 
  • upprätta betalningar och lokala valutor 
  • och mer

3. Magento Theme Customization

Få ditt Magento-tema anpassat till ett rimligt pris inom bara en dags omgång.

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

Denna leverantör erbjuder en rad Magento-tjänster, inklusive:

  • anpassad Magento webbutveckling 
  • mottagliga Magento webbplatser 
  • anpassad Magento temat utveckling 
  • modulutveckling 
  • shopping cart utveckling 
  • säker gateway integration

Om dessa lösningar inte är rätt för dig, försök en av de dussintals andra som finns på Envato Studio.