2012-12-03 13 views
5

Wie auch immer, um die endgültige XML-Struktur zu untersuchen, die Magento nach dem Parsen & mit allen verschiedenen XML-Dateien erstellt?Untersuchung der endgültigen XML-Struktur von Magento

  1. Es gibt nichts dergleichen, die auf der Suche im Internet aufgedreht und ich denke, für jemanden wie mich, magento Layouts waren ein wenig zu viel am Anfang & ich versuchen würde, alles auf dem Code auf dieser Seite zu tun.
  2. Eine andere Sache, die helfen wird, den Namen von verschiedenen Knoten, die wir verwenden können, direkt von der endgültigen XML-Struktur abzurufen.
  3. Ich bin nie auf dieses Problem gestoßen, aber ich glaube, wir werden ein besseres Bild davon haben, was das überlagert.
+0

Ich habe diesen Versuch nie gesehen. Ich weiß, dass es draußen eine Menge an Controllern gibt, die Sie auf den richtigen Weg bringen würden, aber da Magento so kompartimentiert ist, würde ich denken, dass es keine "einfache" Lösung gibt. – Zak

+0

Ich habe dieses Q abgelehnt, weil es offen ist und keine Mühe zeigt. Ich denke, es ist ein potenziell interessantes Thema. – clockworkgeek

+0

@clockworkgeek Sollten Sie nicht ablehnen, was nicht als eine gute Frage qualifiziert ist? Und wenn das interessant ist, warum dann runterziehen? Ich habe nicht den Magento-Mojo, um so etwas zu tun, aber es wird sicherlich beim Lernen helfen. Behalten Sie Ihren Downvote, wenn Sie nicht zustimmen. – Ashfame

Antwort

7

Nachfolgend erhalten Sie die zusammengefügte Konfiguration erhalten von app/etc/*.xml , app/etc/modules/*.xml, sowie die Datei config.xml jedes (aktiven) Moduls; wenn die Config Abrufen obwohl es keine Hinweise darauf gibt, was überschrieben wurde, da die Verschmelzungen als jede Konfigurationsdatei passieren wird analysiert werden:

Mage::getConfig()->getNode()->asNiceXml(); // or asXML() | asArray() | etc. 

Allerdings scheinen Sie zu fragen, wie sich die Anwendung Verwendung von macht diese Information. Dies ist eine Funktion des Anwendungsdesigns.

Auch Sie erwähnen "alle der verschiedenen XML-Dateien." Es ist erwähnenswert, dass diese nicht in einer massiven Objektinstanz gepflegt werden. Zum Beispiel wird das Layout XML Mage_Core_Model_Layout_Update mit dem Layout-Update-Objekt zugegriffen und kann Bedeutung zugegriffen werden, nachdem es für einen bestimmten Rendering-Umfang (zB loadLayout() in einer Controller-Aktion) geladen und manipulierte ist schon:

Mage::app()->getLayout()->getUpdate()->asString(); // or asSimplexml() or asArray() 
2

Ja - Commercebug. Neben einer ganzen Reihe anderer nützlicher Funktionen können Sie auch die gesamte XML-Struktur anzeigen, die Magento erstellt hat.

http://store.pulsestorm.net/products/commerce-bug-2

+0

Großartig! War das in V1? Ich glaube, ich habe eine Kopie. – Ashfame

+0

Ja, es ist in v1 (das ist, was ich habe). Es gibt eine Layout-Registerkarte, die Ihnen die vollständige XML-Struktur anzeigt :) – McNab

+1

Außerdem war das Anzeigen der Layout-Zusammenführung eine der ersten Moduldemonstrationen, die Alan Storm auf der Website magentocommerce.com eingereicht hat. Es war sehr wertvoll und war die Grundlage für den Kauf von Commerce Bug. –

1

Ich glaube, die folgende ausgeben wird die XML: echo Mage::getConfig()->getXmlString();

Sie ein Skript mit so etwas wie dies schaffen kann:

header("Content-Type:text/xml"); 

require_once '../app/Mage.php'; 

Mage::app(); 

echo Mage::getConfig()->getXmlString(); 
+0

Wo ist diese Methode definiert? – benmarks

+0

@benmarks: Varien_Simplexml_Config, und es ruft im Wesentlichen den Code, den Sie erwähnten, so ist es im Grunde nur eine Abkürzung. – jmspldnl

0

basierend auf Antwort ich aus benmarks tat

echo "<pre>".htmlspecialchars(Mage::getConfig()->getNode()->asNiceXml())."</pre>"; 

Wenn Sie zum Beispiel möchten 1 die Blöcke Konfiguration in Magento sehen Sie diese in einer Datei speichern, kann an der Wurzel der Site die Datei platzieren und sie in einem Browser navigieren:

<?php 
include("app/Mage.php"); 
Mage::app(); 

//just see blocks... 
echo "<pre>".htmlspecialchars(Mage::getConfig()->getNode()->global->blocks->asNiceXml())."</pre>"; 
die(); 
Verwandte Themen