Die Meldung "on a non-object" ist klar. Du kannst nicht eine Methode aufrufen auf einer Variable die nicht existiert. Zuerst musst du herausfinden, welche Variable das Produkt repräsentiert. Eigentlich ist das immer
Ausser bei Product Collections (Warenkorb, Bestellung etc.) da wird jedes Produkt dupliziert und als Item gehandhabt. Dies, damit die Daten nicht verloren gehen, sollte das eigentliche Produkt gelöscht werden. Insofern muss da zuerst das Produktobjekt das zum Item gehört geholt werden. Da eben der Fall eintreten kann, dass dieses Produkt nicht mehr vorhanden ist, empfiehlt es sich, diesen Fall abzufangen:
PHP-Code:
if ($item->hasProduct()) {
$item->getProduct()
}
Der Aufruf von "current()" ist unnötig. Die Rückgabe ist ein Array, weshalb du korrekterweise ein "Array" ausgegeben bekommst, wenn du einfach nur "echo" machst. Du musst aber über jede Staffel iterieren:
PHP-Code:
if ($this->product->hasTiers()) { // macht Sinn das zu prüfen
foreach ($this->product->getTiers() as $min => $price) {
echo 'Ab der Anzahl von ' . $min . ' kostet mein Käse ' . $price;
}
}
Übrigens lässt sich der Preis bequem gemäss den Shop-Settings formatieren:
PHP-Code:
echo \Isotope\Isotope::formatPriceWithCurrency($price);