Warum hat Magento 3 Code-Pools?


26

Magento hat drei Code-Pools:

  1. Gemeinschaft
  2. Ader
  3. lokal

Kern: Es enthält alle Magento-Standardmodule

Community und lokal: Wir verwenden diese Code-Pools für unsere benutzerdefinierte Modulentwicklung.

Jetzt habe ich Zweifel:

  • Warum verwendet Magento zwei Code-Pools für unsere Anpassung?
  • Warum verwendet Magento nicht einen einzigen Code-Pool zur Anpassung?

Könnte jemand das erklären?

Antworten:


34

app / code / core - Enthält Module, die mit dem Basismagento verteilt werden und die Kernfunktionalität ausmachen.

App / Code / Community - Enthält Module, die von Dritten entwickelt wurden

app / code / local - Enthält benutzerdefinierte Module, die Sie entwickelt haben, einschließlich Mage-Code-Überschreibungen.

Warum verwendet Magento zwei Code-Pools für unsere Anpassung?

Magento verwendet tatsächlich drei Code-Pools. Es wird zuerst lokal , dann Community und dann Core geladen . Es werden drei für Organisationszwecke und zur Behebung von Problemen verwendet, wenn zwei oder mehr Erweiterungen von Drittanbietern versuchen, dasselbe zu schreiben. In einem Beispiel, in dem Sie zwei Erweiterungen in App / Code / Community haben, die versuchen, dasselbe Modell neu zu schreiben, können Sie einfach eine Erweiterung in App / Code / Local erstellen und die beiden Erweiterungslogiken zusammenführen.

Warum verwendet Magento keinen einzelnen Code-Pool zur Anpassung?

Auf diese Weise wurde versucht, Code zu organisieren. Wenn Sie Konflikte mit Drittanbietern haben, hilft Ihnen das lokale Netzwerk bei der Lösung dieser Probleme. Das Lokal ist auch großartig, Erweiterungen zu haben, die nur diese Site jemals haben wird.


1
Schöne Antwort auf Frage zum Single Code Pool. Angesichts all der Konflikte, auf die Sie nach der Installation mehrerer Module von Drittanbietern stoßen, ist es sehr localwichtig , dass dieser dritte Code-Pool alle Aufhänge ausgleicht.
Fiasko Labs

11

Bildbeschreibung hier eingeben

core :Dieser Code-Pool gehört zum Kernentwicklungsteam von Magento. Sie sollten also KEINE Änderungen an diesem Code-Pool vornehmen.

community :Dies gehört Magento-Community-Entwicklern (einschließlich Entwicklern, die Erweiterungen von Drittanbietern entwickeln). Wenn Sie Erweiterungen von Drittanbietern erstellen, können Sie diesen Codepool dafür verwenden.

local :Dies kann verwendet werden, wenn Sie Änderungen (Hinzufügen neuer Funktionen / Überschreiben von Erweiterungen / Änderungen der Kernfunktionen usw.) speziell für Ihren Magento-Store vornehmen und diese nicht für die Community freigeben möchten. Gleichzeitig können Sie die Funktionalität in Core- und Community-Code-Pools überschreiben


5

Beschreiben von Magento-Codepools

Core-Pool

Erstens speichert dieser Ordner den gesamten Code, der Magento so leistungsfähig, flexibel und ansprechend macht. Die Hauptregel der Magento-Entwicklung ist, dass Sie niemals Änderungen daran vornehmen sollten. Mit anderen Worten, dieser Ordner gehört nur den Magento-Kernentwicklern und wenn Sie irgendetwas in diesem Pool bearbeiten, könnte Sie ihr böser Geist sogar durch die Anzeige bestrafen.

Gemeinschaftspool

Dieser Ordner gehört ausschließlich Community-Entwicklern. Dies ist der richtige Ort für Hunderte von kostenlosen und kostenpflichtigen Erweiterungen von Drittanbietern, die Sie bei MagentoConnect oder im Extensions Development Store finden. Wenn Sie also eine Erweiterung installiert haben, muss diese in app / code / community / only vorhanden sein.

Lokaler Pool

Wenn Sie einen eigenen Magento-basierten Store haben und alles selbst erstellen möchten oder ein Magento-Entwickler sind und die Logik irgendwie ändern möchten, ist der lokale Pool der Ort, an dem alles getan werden sollte. Wenn Sie Magento-Erweiterungen, -Blöcke oder -Methoden überschreiben möchten, kopieren Sie die erforderlichen Ordner aus dem Core-Pool und tun Sie, wozu Sie geneigt sind. Wenden Sie dieselbe Regel für benutzerdefinierte Erweiterungen an, die speziell für die Website erstellt wurden. Der gesamte Code sollte sich im lokalen Pool befinden.


4

Dies alles einfach hinzufügen, um Prioritäten zu setzen und Modularität zu erreichen. Sie können das gleiche in Mage.php überprüfen.

Laden von Code-Pools mit

 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
 $paths[] = BP . DS . 'lib';

Also zuerst Local, dann Community, dann Core und Magento werden keine Core-Dateien finden, dann wird nach lib-Ordnern gesucht, die die Zend-Framework Core-Dateien enthalten


1

Die beste Erklärung, die ich habe, ist, dass Sie Ihre Erweiterungen, wenn Sie sie beispielsweise über Magento Connect an ein breiteres Publikum verteilen möchten, in der Community platzieren können.

Auf diese Weise könnte ein anderer Entwickler das Verhalten überschreiben, indem er eine Klasse in den lokalen Ordner legt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.