upsell.phtml im statischen block = tödlicher Fehler: Rufen Sie eine Mitgliedsfunktion getItems () auf einem Nicht-Objekt auf
-
16-10-2019 - |
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?!
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