3 Stimmen

Magento - bestimmen, welche xml-Layout-Datei eine Seite verwendet wird?

Ich habe versucht, die Dokumentation zu lesen, aber ich verstehe immer noch nicht wirklich, wie die Magento-Xml-Layout-Dateien funktionieren.

Im Verzeichnis app/design/frontend/default/modern/layout Ich sehe eine Menge Xml-Dateien. Wie kann ich feststellen, welche Xml-Datei eine bestimmte Seite auf der Website verwendet?

Wenn ich zum Beispiel auf der Homepage von http://mysite.com Welche Layout-xml-Datei verwende ich? Was ist, wenn ich auf http://mysite.com/hello-world welche xml-Datei dann?

9voto

Alan Storm Punkte 160579

Hochrangige Version: Sie verwenden nie nur eine Layout-Datei.

Alle XML-Dateien werden in einer riesigen XML-Datei mit der Bezeichnung Paketlayout zusammengefasst.

Jede Seitenanforderung enthält eine Reihe spezieller Zeichenfolgen, die als "Handles" bezeichnet werden.

Anschließend wird das Paketlayout nach Knoten durchsucht, die mit diesen Handles übereinstimmen.

Die übereinstimmenden Knoten werden in einer einzigen XML-Datei mit der Bezeichnung "Seitenlayout" zusammengefasst.

Das ist die Layout-Datei, die für eine bestimmte Anfrage verwendet wird.

(schamlose, aber nützliche Werbung folgt)

Ich habe einen mehr ausführlicher Artikel zu diesem Thema und wenn Sie auf der Commerce Bug Demo-Seite und sehen Sie sich die Registerkarte Layout an. Dort sehen Sie ein Beispiel für die Handles, die jede Seitenanforderung erzeugt, sowie die Ausgabe für die Paket- und Seitenlayouts.

2voto

Joe Mastey Punkte 26494

Als trivialer "Anfang" (aber bitte lesen Sie Alans Links), wenn Sie sich auf der Seite Katalog/Produkt/Ansicht befinden, ist das Layout-Handle, das standardmäßig geladen wird <catalog_product_view> . Insgesamt ist es aber viel komplizierter als das. Mit Layout-Hinweisen können Sie herausfinden, aus welchen Blöcken und Vorlagen die Seite besteht, was oft nützlicher ist.

2voto

szpoq Punkte 11

Jede zu layoutende Datei wird hier geladen app/code/core/Mage/Core/Model/Layout/Update.php Mage_Core_Model_Layout_Update::fetchFileLayoutUpdates()

xml für die Seite zu erstellen, ist hier: app/code/core/Mage/Core/Model/Layout.php Mage_Core_Model_Layout::generateXml()

Die Menschen erwarten, dass sie hier schneller eine Antwort erhalten als in Büchern und Artikeln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X