So erstellen Sie ein Modullayout, das für alle Themen angezeigt wird

13

Hier ist die Situation: Ich habe mehrere selbst erstellte Module, die alle getestet wurden und mit dem Standarddesign arbeiten. Dann haben wir ein neues Theme gekauft und installiert. Umgestellt auf das neue Thema und die Module werden nicht angezeigt. Nach mehreren Try / Fail-Tests stellte ich fest, dass ich die entsprechenden Layout- und Vorlagendateien in die entsprechenden Ordner des kürzlich installierten Designs kopieren musste.

Meine Frage lautet also: Was muss ich tun, damit alle meine Module mit einem nach dem Modul-Setup installierten Thema funktionieren?

Jaroslaw
quelle
1
Wenn Sie Ihre Layoutdateien in design / frontend / base / default / ... ablegen, werden sie unabhängig vom Thema angezeigt
Sander Mangel

Antworten:

17

Alles in die base/defaultWege legen.

Beispiel:

app/design/frontend/base/default

skin/frontend/base/default

Mark Shust
quelle
Autsch! Ich habe nicht darüber nachgedacht, Sie haben Recht, werden testen, sobald Sie im Büro ankommen.
Jaroslaw
+1 - Es gibt zu viele Module mit der Bezeichnung "Community", die dieser Praxis nicht folgen, und sie sollten dies tun.
Pspahn
Die Basisvorlage wurde in Magento 1.4 eingeführt. genau dieses Problem zu lösen. In früheren Versionen war das Kopieren der Vorlagendateien der richtige Weg, wenn Sie nicht das Standardpaket verwendeten.
Kristof bei Fooman
5

Die harte Wahrheit ist, dass Sie nicht wirklich garantieren können, dass sie es sein werden. Durch das Einfügen Ihrer Dateien in base/default(oder das default/defaultÜberschreiben von Kernvorlagen - da Sie bei einer Modulinstallation keine Basisdateien überschreiben möchten, obwohl Sie dazu gezwungen sind, Duplikate für die Enterprise Edition zu behalten) wird sichergestellt, dass sie zu den Ausweichdateien werden, bei Designdateien jedoch Immer höchste Priorität haben.

Die meisten Module werden mit einem Installationshandbuch geliefert, in dem erwähnt wird, dass die Vorlagendateien in das Thema des Benutzers kopiert werden sollen, wenn sie ein benutzerdefiniertes Thema haben. Das ist ungefähr das Beste, was Sie tun können.

Andrew Quackenbos
quelle
4

Eine Sache, die wir einige Male benutzt haben, ist [Fabrizio Branca] [1] [Custom Fallback] [2]. Es ist ein sehr nützliches Modul zum Festlegen Ihrer eigenen Fallback-Hierarchie für Themen. Sie können Folgendes angeben:

  1. custom/theme

  2. base/default

  3. default/default

Dann alle Module, die ihre eigenen Vorlagen in das default/defaultThema einfügen. Funktioniert nicht, wenn sie versuchen, base/defaultPakete zu überschreiben .

Sie können eine beliebige Anzahl von Paketen / Designs in der benutzerdefinierten Fallback-Hierarchie angeben.

[1]: http://www.fabrizio-branca.de/ [2]: http://www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html

Luke Mills
quelle
2

Jede Vorlage und Layoutdatei base/defaultwird geladen, es sei denn, sie wird irgendwo entlang des Pfads überschrieben. Wenn es sich bei Ihrem benutzerdefinierten Modul jedoch um ein Widget handelt, sollten Sie sicherstellen, dass es dort wiedergegeben wird, wo es jemals benötigt wird. Wenn Sie zum Beispiel Änderungen vornehmen, die auf der Produktseite über angezeigt werden getChildHtml, sollten diese Aufrufe auch dem entsprechenden Thema entsprechen. Wenn Ihre Modulvorlagen jedoch Seiten für sich sind und nicht geladen werden base/default, blockiert etwas die Layoutkonfiguration und Sie sollten was finden.

Petar Dzhambazov
quelle
Sehr interessant ist der Kommentar zum getChild, ich habe ja einige Anrufe dieser Art.
Jaroslaw
1

Darauf gibt es keine einfache Antwort. Es hängt von den Modulen ab, die Sie haben. Zum Beispiel einige Modulfirmen, die die Kerndateien überschreiben. Daher sollten Sie zunächst prüfen , was in den zur Verfügung stehenden Daten app/etc/modulesund app/code/local/Mage, app/code/community/MageOrdnern. Wie Sie vielleicht wissen, ist der erste Ordner ein Modulinitialisierungsordner, in dem Sie die durch XML-Dateien verknüpften Module deaktivieren oder aktivieren können. Die letzten beiden Ordner (sofern verfügbar) sind Ordner, die den Hauptcode überschreiben.

Öffnen Sie dann eine der XML-Dateien des verfügbaren etc/modulesVerzeichnisses. Sie sehen etwas wie unten:

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

Hier sind die wichtigen Teile Companyund Namespace. Wenn Sie die Ordner app/code/localoder besuchen app/code/community, sehen Sie einen Ordner mit dem Namen Companyund anschließend einen Unterordner mit dem Namen Namespace.

Wenn Sie nachschlagen Namespace, sehen Sie einen Unterordner mit dem Namen /etc. Dieser Ordner enthält die modulbezogene Konfigurationsdatei config.xml. Diese Datei enthält modulbezogene Konfigurationszeilen, auf die Sie verweisen können, welche Dateien dieses Modul betreffen.

Wie ich in meiner ersten Zeile sagte, ist es schwer zu verwalten.

Oğuz Çelikdemir
quelle
Ich denke, Sie haben den Punkt der Frage verpasst. Er fragte nach Layout-Updates. Es wird empfohlen, einen Basis- / Standard- / YourModule-Pfad zu verwenden.
Mark Shust