wir nutzen folgenden code um alle produkte mit preis 0,00 € als "Preis auf Anfrage" zu kennzeichnen: PHP: class ff_xtcPrice extends ff_xtcPrice_parent{ // mod ff function xtcFormat($p_price, $p_format, $p_tax_class = 0, $p_calculate_currency = false, $p_return_array = 0, $p_products_id = 0) { $output = parent::xtcFormat($p_price, $p_format, $p_tax_class, $p_calculate_currency, $p_return_array, $p_products_id); if(is_array($output)) { //echo "ff".$output['formated']."ff"; if(strpos($output['formated']," 0,00 EUR")!==FALSE)$output['formated']=" Preis auf Anfrage*"; $output['formated']=str_replace("EUR","€",$output['formated']); } elseif($p_format) { if(strpos($output," 0,00 EUR")!==FALSE) $output = " Preis auf Anfrage*"; $output = str_replace("EUR","€",$output); } return $output; }} grund hierfür ist dass auch diese produkte in den warenkorb gelegt werden können sollen. bei echtem "preis auf anfrage" aus gambio wäre dies nicht möglich. funktioniert auch alles gut, aber wenn versandkosten 0,00 EUR sind erscheint jetzt hier natürlich auch "Preis auf Anfrage*" meine frage: gibt es irgendeine möglichkeit zu identifizieren, welche übergeordnete klasse die preisausgabe via xtcFormat angestossen hat - und diese dann selektiv nur für bestimmte preise (also nicht versandkosten) anzustossen? oder muss ich hier an einem ganz anderen punkt ansetzen?
Das wäre debug_backtrace(). Wie praktikabel das als Lösung ist, kann ich aus dem Stegreif nicht sagen.
Wieso setzt Du nicht einfach über ein Event in der Datenbank die Artikel wirklich auf "Preis auf Anfrage"?
mit dem "echten" preis auf anfrage sind produkte nicht käuflich. wir wollen sie aber käuflich machen. daher verwandeln wir den in der db hinterlegten preis "0 €" in "preis auf anfrage".
war meint erster gedanke. aber da der preis später durch xtcPriceFormat gejagt wird, führt umwandlung 0 euro in "preis auf anfrage" hier natürlich zu massig fehlermeldungen.
erst die Methode im "parent" der products-Klasse ausführen und danach im Overload Deine notwendigen Änderungen durchführen?