In dieser Serie werden die im Magento eCommerce-System verfügbaren Funktionen überschrieben. Im vorherigen Artikel haben wir beschrieben, wie Sie Kernblockdateien mit einem benutzerdefinierten Modul überschreiben können. Heute werde ich es erweitern und zeigen, wie Sie Kernmodelldateien mithilfe einer XML-basierten Konfigurationsdatei überschreiben können.
In Magento spielen Modelle eine wichtige Rolle, da sie die meisten Geschäftslogiken der Kernfunktionen implementieren. In bestimmten Fällen müssen Sie den Ablauf oder die Geschäftslogik in Modellen ändern, um Ihre benutzerdefinierten Funktionen zu implementieren.
Es ist verlockend, die Kerndateien direkt zu ändern. Dies scheint eine einfache und unkomplizierte Lösung zu sein. Trotzdem ist es eine schlechte Praxis, da die Aktualisierung von Magento wirklich schwierig ist. Je mehr Kerndateien Sie direkt bearbeiten, desto schwieriger wird es für Sie, Ihre Änderungen zu verfolgen und bei jedem Versionsupgrade anzuwenden!
In diesem Lernprogramm erstellen wir ein benutzerdefiniertes Modul, um zu verstehen, wie das Überschreiben von Modellen in Magento funktioniert. In diesem benutzerdefinierten Modul erfahren Sie, wie Sie eine Kategoriemodellklasse des Kernmoduls "Katalog" überschreiben. Das Überschreiben funktioniert, indem bestimmte XML-Tags gemäß den Konventionen von Magento eingerichtet werden.
Ich gehe davon aus, dass Sie mit dem grundlegenden Modulerstellungsprozess in Magento vertraut sind. Wenn nicht, finden Sie hier einen guten Artikel, der die Grundlagen der Erstellung benutzerdefinierter Module erläutert. Lassen Sie uns direkt in den Verlauf dieses Tutorials einsteigen!
Hier ist die Liste der Dateien, die für das gewünschte Setup erforderlich sind:
app / etc / modules / Envato_All.xml
: Dies ist eine Datei, die zum Aktivieren unseres benutzerdefinierten Moduls verwendet wird.app / code / local / Envato / Catalog / etc / config.xml
: Es handelt sich um eine Modulkonfigurationsdatei, in der die Modellklasse mit bestimmten Tags gemäß den Magento-Konventionen überschrieben wird.app / code / local / Envato / Katalog / Modell / Kategorie.php
: Dies ist eine Modellklasse unseres benutzerdefinierten Moduls, die die Basismodellklasse überschreibt.Zuerst müssen wir eine Modul-Enabler-Datei erstellen. Erstellen Sie eine Datei "app / etc / modules / Envato_All.xml" und fügen Sie den folgenden Inhalt in diese Datei ein. Wir haben gebraucht Envato
als unser Modul-Namensraum und Katalog
als unser Modulname. Das Modul "Katalog" wird standardmäßig aktiviert.
wahr lokal
Als Nächstes müssen wir eine Modulkonfigurationsdatei erstellen. Erstellen Sie "app / code / local / Envato / Catalog / etc / config.xml" und fügen Sie den folgenden Inhalt in diese Datei ein.
1,0 Envato_Catalog_Model_Category
Zuerst haben wir eine Modulversionsnummer mit der definiert
Etikett. Danach die
und
Tags werden verwendet, um das überschreibende System von Magento darüber zu informieren, dass wir ein "Modell" des Kernmoduls "Katalog" überschreiben werden.
Als nächstes die
tag wird verwendet, um eine Modellidentität zu definieren, die von der überschrieben wird Envato_Catalog_Model_Category
Klasse. Es ist einer Modelldatei "Category.php" im Verzeichnis "Model" des Katalogmoduls zugeordnet. Hierbei ist zu beachten, dass wir eine Verzeichnisstruktur verwenden, die dem Kernmodul ähnelt. Obwohl dies nicht unbedingt erforderlich ist, ist es besser als eine andere Verzeichnisstruktur zu verwenden, da dadurch die Lesbarkeit erhalten bleibt.
Schließlich bleibt nur noch die Definition einer Modellklasse Envato_Catalog_Model_Category
. Erstellen wir eine Modelldatei "app / code / local / Envato / Catalog / Model / Category.php" und fügen Sie den folgenden Inhalt in diese Datei ein.
setStoreId ($ this-> getStoreId ()) -> addCategoryFilter ($ this); $ Sammlung zurückgeben;
Wir haben eine definiert Envato_Catalog_Model_Category
Klasse, die den Kern erweitert Mage_Catalog_Model_Category
Modellklasse des Moduls "Katalog". So können Sie jede Methode der Basisklasse überschreiben und bei Bedarf neue Methoden erstellen.
Im obigen Beispiel ist das getProductCollection
Die Methode wird überschrieben, so dass sie anstelle der in der Kernmodellklasse definierten Methode aufgerufen wird! Sie können den Modellcode entsprechend Ihren Anforderungen ändern.
Wenn Sie Methoden in Modellen überschreiben, sollten Sie sicherstellen, dass der Datentyp des Rückgabewerts dieser Methode mit dem Datentyp der Basisklassenmethode übereinstimmt. Da Modellmethoden aus mehreren Kernmodulen aufgerufen werden, sollten wir sicherstellen, dass andere Funktionen nicht beeinträchtigt werden!
Obwohl dies ein sehr einfaches Beispiel ist, dient es dazu, das Kernmodell zu überschreiben, und Sie können es entsprechend Ihren benutzerdefinierten Anforderungen erweitern.
In diesem Lernprogramm haben wir gelernt, wie Kernmodelldateien in Magento mit einem benutzerdefinierten Modul überschrieben werden. Im nächsten und letzten Teil dieser überschreibenden Serie werden wir sehen, wie Core-Controller-Dateien überschrieben werden. Zögern Sie nicht, Ihre Kommentare unten zu hinterlassen!