Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Verständnis-Problem XML-Blöcke und deren Logik
 
Tschan
Jr. Member
 
Total Posts:  30
Joined:  2008-11-12
Germany
 

Hallo,

ich versuche gerade die Bedeutung der einzelnen Attribute der XML-Tags heraus zu finden.
Hier ein Auszug aus der page.xml:

<block type="page/html_header" name="header" as="header">
  <
block type="page/template_links" name="top.links" as="topLinks"/>
  <
block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
  <
block type="core/text_list" name="top.menu" as="topMenu"/>
</
block>

Bei dem Attribut “type” ging ich anfangs davon aus das hier das phtml-File bestimmt wird.

page/html_header = page/html/header.phtml
page/template_links = page/template/links.phtml

Der Unterstrich trennt Pfad und Dateiname (.phtml noch dazu denken). So dachte ich mir jedenfalls auf den ersten Blick könnte das die Logik sein. Allerdings verwirrte mich dann gleich die nächste Zeile:

<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
Bei “type” wird hier nur noch das Verzeichnis angegeben, zusätzlich wird mit dem Attribut “template” Pfad + Dateiname übergeben. Warum wird hier nicht type="page/switch_languages” verwendet, sondern Pfad + Dateiname in “template” übergeben?

Der letzte “block” machte für mich dann gar keinen Sinn mehr:

<block type="core/text_list" name="top.menu" as="topMenu"/>
Es gibt zwar einige Dateien namens list.phtml, doch keiner die in einer Unterordner-Struktur wie core/text/list.phtml zu finden ist.

Und warum sind die Blöcke verschachtelt? Ist es nur um darzustellen das das alles zum Header gehört, oder steckt auch eine Programm-Logik dahinter?

Ich habe natürlich auch viel gegoogelt und mir mehrmals das Design HowTo durchgelesen, aber leider immer noch nicht 100% verstanden wie ich diese XML-Tags benutzen kann, bzw. welche genaue Bedeutung die einzelnen Attribute haben.

Ich würde mich freuen wenn mir jemand die diese XML-Blöcke erklären kann, welche Attribute was bedeuten usw., damit ich die ganze Logik die dahinter steckt begreifen kann. Vielleicht bin ich ja auch nur zu doof, in dem Fall würd ich mich über eine idiotensichere Erklärung freuen wink

 
Magento Community Magento Community
Magento Community
Magento Community
 
Tschan
Jr. Member
 
Total Posts:  30
Joined:  2008-11-12
Germany
 

In der page.xml steht:

<block type="core/text_list" name="left" as="left"/>

Und in der 3columns.phtml wird mit

<?php echo $this->getChildHtml('left'?>
dieser Block geladen.

Doch woher kommt der Inhalt? In welcher phtml-Datei wird der linke Block definiert?

 
Magento Community Magento Community
Magento Community
Magento Community
 
silithium
Jr. Member
 
Total Posts:  5
Joined:  2009-01-19
 

Hallo Tschan,

heute morgen stand ich vor dem selben Verständnis-Problem.

Vielleicht kurz zum Ãœberblick:

../layout/pages.xml ist das sog. Layout bei Magento, welches mittels XML-Dateien strukturiert wird.
../template2columns-right.phtml ist ein Structual Block (Struktur Elemente) welcher vorgibt wo und wie Elemente innerhalb des Layouts angeordnet werden, Structual Blocks bestehen aus XHTML und PHP daher die Endungen *.phtml.

Die Funktion getChildHtml(’right’); ruft nicht direkt eine right.phtml auf, sondern alle Elemente die eine Referenz haben, rechts angeordnet zu werden.
Schau mal in die Datei /layout/catalog.xml dort findest Du den Eintrag:

<reference name="right">
<block type="catalog/product_list_related" name="catalog.product.related" before="-" template="catalog/product/list/related.phtml"/>
</reference>

Auf diese Referenzen greift getChildHtml(’right’] zu und bindet hier z. B. die “Produkte vergleichen” Box in den rechten Content Bereich ein.

Das mit den Pfaden hast Du richtig verstanden, Du findest die entsprechenden Controller-Funktionen zur page.xml unter /apps/code/core/Mage/Page\Block\Html\Header.php den Controller für die Einbindung Kopfgrafiken.

Hoffe ich konnte Dir helfen und hab es in meinem Verständnis so richtig wiedergegeben!

Gruß,
Matthias

 
Magento Community Magento Community
Magento Community
Magento Community
 
Tschan
Jr. Member
 
Total Posts:  30
Joined:  2008-11-12
Germany
 

Danke für diese gut verständliche Erklärung.
Zwar hab ich es inzwischen schon selbst rausgefunden, aber ich denke dem ein oder anderen wird es eine gute Starthilfe sein.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top