Warum gibt es ein / base / default / layout und ein / default / default layout? Dies scheint verwirrend und überflüssig.
Warum gibt es ein / base / default / layout und ein / default / default layout? Dies scheint verwirrend und überflüssig.
Antworten:
Kurz gesagt, es default/default
handelt 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
default
es ein sehr nützliches Debugging-Tool war , das Design / Paket zu ändern.
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/default
wurde 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 /base
es sich um /design/frontend
das /core
handelt, 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 /base
das /default
Unterverzeichnis 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/frontend
und das Thema ist ein Unterverzeichnis innerhalb eines Designpakets. Wenn Magento ein Designpaket durchschaut, egal ob es ist /base
oder nicht /{custompackagename}
, wird das /default
Thema immer der letzte Ort sein, an dem Magento suchen wird.
Da der Hauptzweck von darin /base
besteht, als letzter Punkt im Fallback-System zu dienen, wird es gemäß diesem Zweck niemals ein anderes Thema haben als /base/default
.
Warum gibt es /default
dann 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/default
anstelle 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/generic
und /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/default
ausgefü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}/default
nach 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.