Problemlösung: Magento-Block wird nicht angezeigt

Erstellt am 02. August 2012

Problemlösung Magento Block

no-magento-block

Manchmal ist der Fehler schwer auszumachen und der gewünschte Block taucht einfach nicht auf. Ein Test der nie Schaden kann ist es, einen einfachen Text Block vor den vermissten Block zu setzen:

  1. <block type="core/text" name="test" as="test">
  2.     <action method="addText"><text>Test text</text></action>
  3. </block>

Wird der Text nicht angezeigt, ist vermutlich das Layout-XML-File oder Layout-Handle nicht aktiv. Ein Test wäre die gültigen Layout-Handles zu prüfen, also zu kontrollieren welche XML-Layout-Anweisungen überhaupt geladen werden. Hierzu fügt man in der aktuell aufgerufenen Controller-Action folgendes ein:

  1. $this->loadLayout();
  2. Zend_Debug::dump(Mage::app()->getLayout()->getUpdate()->getHandles());

Wird das Layout-Handle angezeigt, das auch bearbeitet wurde - aber euer Block fehlt immer noch - wird vermutlich das im Layout-XML definierte Template nicht gefunden. Evtl. passiert auch ein Fehler im Code des Blocks. Um dies zu prüfen erstmal ein die('HERE') in die toHtml() Methode des Blocks. Kann man den Text im Browser sehen ist man  vermutlich im richtigen Block und es ist kein Fehler im Code passiert – bis zur toHTML Methode.

Wird nicht in die toHTML() Methode des Blocks gesprungen, ist mit hoher Wahrscheinlichkeit der Block aus dem Layout entfernt. Per unsetChild oder remove Anweisung in einer XML-Layout-Datei. Evtl. wird der Block auch garnicht korrekt hinzugefügt.

Sinnvoll wäre es also nun, in der aufgerufenen Controller-Action das Layout zu prüfen -  ist der Block überhaupt dort enthalten?

  1. $this->loadLayout();
  2. $layout = $this->getLayout();
  3.  
  4. echo '<pre>';
  5. foreach ($layout->getAllBlocks() as $block) {
  6.  
  7.     print_r($block->getNameInLayout()); echo PHP_EOL;
  8.  
  9. }

Natürlich könnte es auch sein, dass  einfach nur ein “echo” vor der getChildHtml Methode vergessen wurde um das Block-HTML einzusetzen. Evtl. ist die Ausgabe des Moduls im Magento-Backend (adminhtml) deaktiviert.

Mit den hier beschriebenen Möglichkeiten  sollte  das Problem zu lösen sein. Viel Erfolg!



Kommentare

Keine Kommentare

Kommentar schreiben

* - Pflichtangabe

Zertifizierungen

  • TYPO3 Certified Integrator
  • Magento Certified Developer
  • Magento Certified Frontend Developer
Kontakt

Cookies helfen uns dabei unsere Webinhalte zu verbessern und Ihnen die bestmögliche Erfahrung zu bieten. Mit der Nutzung der Webseite akzeptieren Sie die Verwendung von Cookies.