Förstå överordnande i Magento Modeller

I denna serie utforskar vi övergripande funktioner som finns i Magento eCommerce-systemet. I den föregående artikeln diskuterade vi hur man ska åsidosätta kärna blockfiler med hjälp av en anpassad modul. Idag förlänger jag det och visar hur du kan överväga kärnmodellfiler med hjälp av en XML-baserad konfigurationsfil.

Varför övergripande modeller?

I Magento spelar modeller en viktig roll eftersom de genomför de flesta affärslogiken i kärnfunktionerna. Det finns tillfällen när du behöver ändra flödes- eller affärslogiken i modeller för att implementera dina anpassade funktioner. 

Det är frestande att fortsätta och ändra kärnfilerna direkt, vilket verkar vara en enkel och okomplicerad lösning. Med detta sagt är det en dålig övning, eftersom det gör uppgraderingen av Magento väldigt svårt. Ju fler kärnfiler du ändrar direkt, desto svårare blir det för dig att hålla reda på dina ändringar och tillämpa dem under varje versionsuppgradering!

I den här handledningen gör vi en anpassad modul för att förstå hur modellövergripande fungerar i Magento. I den här anpassade modulen får vi se hur man överstyrar en kategorimodellklass i kärnkatalogen "Katalog". Överordnade verk genom att skapa vissa XML-taggar enligt Magento-konventionerna.

Jag antar att du är bekant med grundmodulskapet i Magento. Om inte, här är en bra artikel som förklarar grunderna för anpassad moduluppbyggnad. Låt oss hoppa rätt in i kursen av denna handledning!

En blick på inställningen

Här är listan över filer som krävs för önskad inställning:

  • app / etc / modules / Envato_All.xml: Det är en fil som används för att aktivera vår anpassade modul.
  • app / code / local / Envato / Katalog / etc / config.xml: Det är en modulkonfigurationsfil där vi ska ställa in överordnad modellklass med vissa taggar enligt Magento-konventionerna.
  • app / code / local / Envato / Katalog / Modell / category.php: Det är en modellklass av vår anpassade modul som kommer att åsidosätta basmodellklassen.

Skapa filer och mappar: Anpassad modul

Först måste vi skapa en modul enabler fil. Skapa en fil "app / etc / modules / Envato_All.xml" och klistra in följande innehåll i den filen. Vi har använt Envato som vår modul namnrymd och Katalog som vårt modulnamn. Det aktiverar vår "Catalog" -modul som standard.

    Sann lokal   

Därefter måste vi skapa en modulkonfigurationsfil. Skapa "app / code / local / Envato / Catalog / etc / config.xml" och klistra in följande innehåll i den filen.

    1,0       Envato_Catalog_Model_Category     

Först har vi definierat ett modulversionsnummer med hjälp av  märka. Därefter  och taggar används för att informera Magento överordnade systemet att vi kommer att åsidosätta en "modell" av "katalogen" kärnmodul.

Därefter  tagg används för att definiera en modellidentitet som kommer att överskridas av Envato_Catalog_Model_Category klass. Den är mappad till en modellfil "Category.php" under katalogen "Modell" i katalogen Modul. En viktig sak att märka här är att vi följer en katalogstruktur som liknar kärnmodulen. Även om det inte är absolut nödvändigt är det bättre än att använda en annan katalogstruktur eftersom det hjälper till att bibehålla läsbarheten.

Slutligen är det enda som återstår att definiera en modellklass Envato_Catalog_Model_Category. Låt oss skapa en modellfil "app / code / local / Envato / Catalog / Model / Category.php" och klistra in följande innehåll i den filen.

setStoreId ($ this-> getStoreId ()) -> addCategoryFilter ($ this); returnera $ samling; 

Vi har definierat en Envato_Catalog_Model_Category klass som sträcker kärnan Mage_Catalog_Model_Category modellklass av katalogen "Katalog". Således kan du åsidosätta varje metod i basklassen och skapa nya metoder om det behövs.

I ovanstående exempel getProductCollection Metoden är överdriven så det kommer att kallas istället för den metod som definieras i kärnmodellklassen! Du kan ändra modellkoden enligt dina önskemål. 

När du överväger några metoder i modeller, bör du se till att datatypen för returvärdet för den metoden matchar datatypen för basklassmetoden. Eftersom modellmetoder kallas från flera kärnmoduler, bör vi se till att det inte bryter mot andra funktioner!

Även om detta är ett mycket grundläggande exempel, tjänar det syftet med att överdriva kärnmodellen, och du kan förlänga det enligt dina egna krav.

Slutsats

I denna handledning lärde vi oss att överväga kärnmodellfiler i Magento med hjälp av en anpassad modul. I nästa och sista delen av den här överväldigande serien ser vi hur man överstyrer filer med kärnkontrollen. Tveka inte att lämna dina kommentarer nedan!