upsell.phtml im statischen block = tödlicher Fehler: Rufen Sie eine Mitgliedsfunktion getItems () auf einem Nicht-Objekt auf

magento.stackexchange https://magento.stackexchange.com/questions/11824

Frage

Ich werde meine Kategorieliste in einem statischen Block zeigen

<div>{{block type="catalog/product_list" category_id="488" template="catalog/product/list.phtml"}}</div>

Kein Problem. Aber jetzt versuche ich, die upsell.phtml-Vorlage mit zu verwenden

<div>{{block type="catalog/product_list" category_id="488" template="catalog/product/list/upsell.phtml"}}</div>

Und ich werde diesen PHP -Fehler bekommen. Ich bin kein PHP-Entwickler, können Sie mir helfen?

Fatal error: Call to a member function getItems() on a non-object in /var/www/.../catalog/product/list/upsell.phtml on line 1

Und da ist der Standard -Magento -Code (upsell.phtml)

<?php if(count($this->getItemCollection()->getItems())): ?>

Ich habe keine Ahnung, was los ist?!

War es hilfreich?

Lösung

Sie versuchen, nur die Vorlage zu ändern, nicht den Blocktyp. Wenn Sie den Block überprüfen Mage_Catalog_Model_Product_list Sie werden sehen, dass es keine gibt getItemCollection Methode darauf, daher wird dieser Anruf null zurückgegeben (oder möglicherweise eine leere Zeichenfolge, die sich nicht von der Oberseite meines Kopfes erinnern kann). Dies führt zu Ihrer Vorlage, die versucht zu anzurufen getItems auf dieser Null/leeren Zeichenfolge. Wie @Keyul vorschlägt, wäre die Lösung darin, den Blocktyp zu verwenden, mit dem die Datei upsell.phtml zugeordnet ist, nämlich Mage_Catalog_Model_Product_List_Upsell. Dieser Block hat die Methode getItemCollection und gibt so die in der Vorlage erwartete Sammlung zurück.

{{block type="catalog/product_list_upsell" category_id="488" template="catalog/product/list/upsell.phtml"}}

Andere Tipps

Sie können unter einem versuchen

oder
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top