Zum Inhalt springen

Preis "auf Anfrage"

Erstellt am 5. September 2005 · 12 Antworten · letzte Antwort am 5. Mai 2008

Tags: Frage

Flink ·
anj schrieb

Dein Problem müsstest du soweit ich weiss an 4 Stellen suchen:

  • Datenbank

  • class.tx_ttproducts.php

  • tca.php

  • ext_tables.php

Es genügt eine Erweiterung der Funktion

function printPrice($priceText)

.
Ein negativer Preis kann hier ausgewertet werden und eine andere Ausgabe zur Folge haben, wie es oben in einem Beitrag beschrieben ist.

svenja ·

hi, vielen dank für die antworten. ich habe mich ein bisschen mit der class.tx_ttproducts beschäftigt.

die funktion priceText habe ich mir angeschaut

	function printPrice($priceText)
	{
		if (($this->conf["usePriceTag"]) && (isset($this->conf["priceTagObj."])))
		{
			$ptconf = $this->conf["priceTagObj."];
			$markContentArray = array();
			$markContentArray["###PRICE###"] = $priceText;
			$this->cObj->substituteMarkerInObject($ptconf, $markContentArray);
			return $this->cObj->cObjGetSingle($this->conf["priceTagObj"], $ptconf);
		}
		else
			return $priceText;
	}

hier sagt er ja nur, dass in den marker ###PRICE### den angegebenen preis angibt, wo er den hernimmt usw.

ich habe mir die inStock Funktion ebenfalls mal angeguckt, um zu sehen, wie dort die Angabe von -1 übernommen wird. mir würde es schon reichen, wenn ich gleich hier sagen kann: "Preis auf Anfrage". das läuft aber in der inStock anders:

 if ($row["inStock"] < 0) { 
                $markerArray["###PRODUCT_INSTOCK###"] = $this->conf["alwaysInStockMessage"]; 
                $markerArray["###PRODUCT_INSTOCK_UNIT###"] = ""; 
           } 
           else { 
                $markerArray["###PRODUCT_INSTOCK###"] = $row["inStock"]; 
                $markerArray["###PRODUCT_INSTOCK_UNIT###"] = $this->conf["inStockPieces"]; 
           }

Jetzt ist für mich als php-amateurin die frage:
Flink sagt: hier kann ich ein negativen Wert auswerten

 if ($row["usePriceTag"] < 0)
$markerArray["###PRICE###"] = $this->conf["???"];

da wo ich die ??? stehen habe, kann ich da direkt eine Ausgabe
angeben?

@andrea_herzog: danke für deinen tipp, ich hatte das schon geändert, meine preise werden schon als text angezeigt. 😢

Flink ·
svenja schrieb

Jetzt ist für mich als php-amateurin die frage:
Flink sagt: hier kann ich ein negativen Wert auswerten

 if ($row["usePriceTag"] < 0)
$markerArray["###PRICE###"] = $this->conf["???"];

da wo ich die ??? stehen habe, kann ich da direkt eine Ausgabe
angeben?

Probiere es zuerst direkt, ohne eigens definierten TypoScript Setup:

 if ($row["usePriceTag"] < 0)
$markerArray["###PRICE###"] = 'Der Preis ist kleiner als 0';
svenja ·

hallo flink,

ich habe es versucht, bekomme aber kein ergebnis. ich bin so kurz davor, dass rätsel zu lösen aber ich glaub ich brauch noch einmal deine hilfe:

	function printPrice($priceText)
	{
	if ($row["usePriceTag"] < 0)
	$markerArray["###PRICE###"] = 'auf Anfrage'; 				
		if (($this->conf["usePriceTag"]) && (isset($this->conf["priceTagObj."])))
		{
			$ptconf = $this->conf["priceTagObj."];
			$markContentArray = array();
			$markContentArray["###PRICE###"] = $priceText;
			$this->cObj->substituteMarkerInObject($ptconf, $markContentArray);
			return $this->cObj->cObjGetSingle($this->conf["priceTagObj"], $ptconf);
		}
		else
			return $priceText;
	}

das problem ist aber, dass der shop alle negativen einträge sofort in 0 umwandelt. also entweder ich sage ihm, wenn der wert 0 hat dann zeige 'auf Anfrage' oder ich muss einstellen, das er die werte nicht automatisch auf 0 stellen soll. stimmt das?

ich glaube, die erste lösung ist die einfachere lösung, oder? kannst du mir da noch einmal helfen?
tausend dank

Flink ·

Hallo Svenja,

svenja schrieb

das problem ist aber, dass der shop alle negativen einträge sofort in 0 umwandelt. also entweder ich sage ihm, wenn der wert 0 hat dann zeige 'auf Anfrage' oder ich muss einstellen, das er die werte nicht automatisch auf 0 stellen soll. stimmt das?

ich glaube, die erste lösung ist die einfachere lösung, oder? kannst du mir da noch einmal helfen?
tausend dank

Vielleicht wäre es dann besser, diese Korrektur anderswo durchzuführen.

/**
 * Formatting a price
 */
function priceFormat($double)	{
if ($double < 0)
        return 'auf Anfrage';   
else
	return number_format($double,intval($this->conf['priceDec']),$this->conf['priceDecPoint'],$this->conf['priceThousandPoint']);
} // priceFormat
svenja ·

SUPER!!! hab vielen dank, flink. jetzt wird mein erster shop immer wahrscheinlicher! die ausgabe funktioniert! zwar steht jetzt noch das "euro" zeichen und die mehrwertsteuer dahinter, aber das wird schon gehen. vielleicht kann ich die ja irgendwie rauskriegen. tausend dank!

Agi ·

Hallo, auch wenn dieser Thread schon etwas betagter ist, so ist er dennoch das Beste was ich zu meinem Problem gefunden habe.

Ich möchte ebenfalls bestimmte Produkte als "Auf Anfrage" gekennzeichnet haben. Ich hätte es gerne, dass bei diesem Produkten auch der Button zum "In den Warenkorb" legen nicht erscheinen würde.
Jedoch ist mir leider bislang kein unkomplizierter Lösungsansatz eingefallen.
Die einzige Möglichkeit sehe ich derzeit darin, eine eigene Funktion zu schreiben, die entweder die normale Ausgabe (Preisangabe und Warenkorb-Button) oder eben einen alternativen "Auf Anfrage"-Text erzeugt.

Hat vielleicht jemand eine bessere Idee oder ist das Problem schonmal von einer anderen Seite her angegangen?

Mit Dank im Voraus für jede Antwort

PS: Typo3 4.0.2, tt_products 2.5.1

Flink ·

Dazu könnte man die Variante 5 - additional erweitern. Dort findet alles Platz, was als einfache Checkbox mit Ja oder Nein zu beantworten ist.
Es könnte von der Anzeige her gleich gelöst werden wie ein Einzelprodukt.

masterle ·

hi,

ich versuche auch gerade einen "preis auf anfrage" zu erstellen.

habe entsprechende class.tx_ttproducts.php abgeändert mit

Vielleicht wäre es dann besser, diese Korrektur anderswo durchzuführen.

/**
* Formatting a price
*/
function priceFormat($double) {
if ($double < 0)
return 'auf Anfrage';
else
return number_format($double,intval($this->conf['priceDec']),$this->conf['priceDecPoint'],$this->conf['priceThousandPoint']);
} // priceFormat

aber ich kann bisher nur negative zahlen ausgeben und mehr leider nicht.

was habe ich vergessen?

mfg
masterle