Warum gibt es ein / base / default / layout und ein / default / default layout?

10

Warum gibt es ein / base / default / layout und ein / default / default layout? Dies scheint verwirrend und überflüssig.

CommaToast
quelle

Antworten:

7

Kurz gesagt, es default/defaulthandelt sich um ein Vermächtnis von <1.4CE, bei dem es sich um das ursprüngliche Basispaket handelte. Magento-Kernthemen werden immer noch im Standardpaket geliefert - daher ist es nicht unbedingt veraltet , sondern ein Vermächtnis.

Da Standard / Standard bei CE-Upgrades überschrieben werden kann, ist es nicht ratsam, Dateien hier zu platzieren. Plugins, die versuchen, abwärtskompatibel mit <1.3 zu sein, können jedoch absichtlich Dateien hier anstelle von Basis / Standard platzieren.


Quelle: http://www.magentocommerce.com/knowledge-base/entry/magentos-theme-hierarchy#3.2

philwinkle
quelle
So kann ich das Verzeichnis / design / frontend / default komplett löschen und alles funktioniert noch einwandfrei? Ich meine, ich hätte nur / base / default. Das ist in Ordnung, oder? Warum gibt es in / design / adminhtml oder / design / install kein / base / default?
CommaToast
Es ist sicherlich möglich. EE wird ohne das Standard- / Standarddesign geliefert.
Philwinkle
1
Standard / * werden nur verwendet, wenn Sie angeben, dass das Paket das zu verwendende Paket ist. Sie können das Verzeichnis sicher entfernen, wenn Sie dies wünschen. Beachten Sie jedoch, dass es möglicherweise während der Aktualisierung / Installation wiederhergestellt wird.
Philwinkle
1
Sie können Vorlagenhinweise aktivieren und prüfen, ob ein Block / default / default verwendet, wenn Sie immer noch Zweifel haben.
Amasty
1
Ich kann mich zumindest ein paar Mal daran erinnern, dass defaultes ein sehr nützliches Debugging-Tool war , das Design / Paket zu ändern.
pspahn
5

Ich habe im offiziellen Magento-Wiki eine noch bessere Antwort gefunden . (Es ist aus dem Jahr 2012, daher bin ich mir nicht sicher, ob eine der Informationen veraltet ist - aber es scheint, soweit ich das beurteilen kann, auf 1.8.1 anwendbar zu sein.) Ich empfehle Ihnen jedoch dringend, sie vollständig zu lesen (klicken Sie auf Fettdruck) Link), lassen Sie es mich unten zusammenfassen.

Worum geht es /base?

/base/defaultwurde in CE 1.4 und EE 1.8 eingeführt, um alle Front-End-Funktionen vom Typ App-Logik in einer einzigen Codebasis zu konsolidieren, die Sie niemals bearbeiten sollten. Es hat die gleiche Verzeichnisstruktur wie ein Designpaket mit einem Standarddesign , es fehlen jedoch einige wichtige CSS-Dateien, sodass Sie nicht empfohlen werden, es als einziges Designpaket und Design zu verwenden.

Eine großartige Analogie wäre zu sagen, dass /basees sich um /design/frontenddas /corehandelt, was zu tun ist /code. Sie sollten die darin enthaltenen Dateien nicht ändern /base. Stattdessen sollten Sie die Funktionalität in Ihrem eigenen benutzerdefinierten Designpaket erweitern , in das Magento zuerst hineinschaut, bevor es zurückgreift /base/default- zuerst wird es hineingeschaut /design/frontend/{custompackagename}/{customthemename}, dann fällt es zurück /design/frontend/{custompackagename}/default/und zuletzt wird es zurückgreifen /design/frontend/base/default.

Eigentlich sollte man sich nur vorstellen, dass /basedas /defaultUnterverzeichnis nur vorhanden ist, weil das Magento-Fallback-System seine Reise durch jedes Designpaket in seinem /default Thema abgeschlossen hat . Um klar zu sein, ist ein Designpaket ein Unterverzeichnis innerhalb /design/frontendund das Thema ist ein Unterverzeichnis innerhalb eines Designpakets. Wenn Magento ein Designpaket durchschaut, egal ob es ist /baseoder nicht /{custompackagename}, wird das /defaultThema immer der letzte Ort sein, an dem Magento suchen wird.

Da der Hauptzweck von darin /basebesteht, als letzter Punkt im Fallback-System zu dienen, wird es gemäß diesem Zweck niemals ein anderes Thema haben als /base/default.

Warum gibt es /defaultdann eine?

Warum gibt es dann noch eine /design/frontend/default/default? Und warum gibt es keine /design/adminhtml/base/default? Um ehrlich zu sein, kenne ich die Antwort auf die zweite Frage nicht. Aber lassen Sie mich versuchen, die erste zu beantworten.

Wenn ich die Legacy-Kompatibilität usw. vergesse, ist es meiner Meinung nach viel einfacher zu verstehen, wenn sie /generic/defaultanstelle von aufgerufen wird /default/default. Also für die Zwecke dieser Diskussion werde ich beziehen /app/design/frontend/default/und /app/skin/frontend/default/gemeinsam als „generic - Design - Paket“. Ich beziehe mich auf alles in diesen Verzeichnissen, als ob sie aufgerufen würden /app/design/frontend/genericund /app/skin/frontend/generic. Da das Fallback-System von Magento (zumindest im Fall des Frontends) nicht mehr verwendet wird /app/design/frontend/default/, ist es meiner Meinung nach verwirrend, es weiterhin als "Standard" zu bezeichnen, da dieses Wort impliziert, dass etwas Teil der Fallback-Kette ist, das generische Designpaket jedoch nicht mehr Teil der Fallback-Kette ab Einführung von/base. Wenn Sie es daher als "generisches Designpaket" anstelle des "Standarddesignpakets" bezeichnen, wird diese Verwirrung verringert, indem Sie uns mitteilen, dass es sich bei Magento nur um eine Reihe generischer Themen handelt, die kostenlos sind, ohne dass dies Teil der Fallback-Kette ist. : D.

Tragen auf dann: das allgemeine Design - Paket verfügt über ein Standard - Theme und mehrere Nicht-Standard - Design innen: /blank, /iphone, und /modern. Wenn ein nicht standardmäßiges Design aktiv ist, überschreiben seine Dateien alles im Standarddesign, aber unabhängig davon, welches nicht standardmäßige Design aktiv ist, alle Teile des Standarddesigns des generischen Pakets, die nicht vom nicht standardmäßigen Design überschrieben wurden immer noch laufen, und weiter werden sie alles in überschreiben /base/default. Schließlich werden alle nicht überschriebenen Teile von /base/defaultausgeführt.

Entscheidend ist jedoch, dass kein Teil des generischen Designpakets jemals ausgeführt wird, wenn Sie ein benutzerdefiniertes Designpaket verwenden. Das Fallback-System geht direkt von {customdesignpackage}/{customthemename}bis {customdesignpackage}/defaultnach base/default. (Es sei denn, ich verstehe das nicht richtig. Bitte korrigieren Sie mich, wenn ich falsch liege.)

Abgesehen davon wäre es unklug, das generische Designpaket vollständig zu löschen, ohne dass ein benutzerdefiniertes Designpaket vorhanden ist, da das generische Designpaket einige Skin-Elemente enthält, die noch erforderlich sind.

CommaToast
quelle