Hallo
ich habe zk_products ausprobiert und bin auf ein Problem gestoßen, für das ich keine hilfe im netz finde.
ich habe mir meinen shop aufgesetzt, in dem man bilder kaufen kann. für manche bilder möchte ich aber auf eine preisangabe verzichten und dafür "auf anfrage" stehen haben. Aber im modul sind in diesen feldern nur zahlen zugelassen, wenn ich buchstaben eingebe dan kommt 0.00 euro!
wie kann ich buchstaben oder sonderzeichen in dem Preisfeld zulassen?
liebe grüße
Hallo Svenja,
habe das Problem auch.
Ich weiss nicht, ob dir das hilft, denn ich setze zk-products nicht ein, sondern tt_products.
Aber ich habe in der ext_typoscript_constants.txt folgendes gefunden. Da scheint es die Möglichkeit zu geben, einen grafischen Preis zu setzen.
cat=plugin.products//; type=boolean; label=Use Price Tag: Print a graphical price tag instead of the normal text field
usePriceTag = 0
In der ext_typoscript_setup.txt steht dann dies:
usePriceTag = {$plugin.tt_products.usePriceTag}
useStaticInfoCountry = {$plugin.tt_products.useStaticInfoCountry}
priceTagObj = IMAGE
priceTagObj.wrap = |
priceTagObj.file = GIFBUILDER
priceTagObj.file {
backColor = #C4C400
XY = [10.w]+10,[10.h]+5
10 = TEXT
10 {
text = ###PRICE###
offset = 0,14
fontColor = #222222
fontSize = 16
align = center
niceText = 1
}
}
Das habe ich aber noch nicht probiert.
Ich habe übrigens auch mal in der tca.php im Array price den eval= auskommentiert (dann wird der Text zumindest im BE angezeigt). Reicht also nicht aus.
Bist du schon weiter gekommen?
Oder weiss jemand anders etwas?
Gruß
Andrea
Hallo Svenja!
Dein Problem müsstest du soweit ich weiss an 4 Stellen suchen:
In der Datenbank sollte es standardmässig varchar(20) sein ... also wäre es für TEXT ok.
in der zk_products extension solltest du mal nach dem feld price sehen ob es irgendwie werte die keine integer sind nicht ausgibt.
In der tca.php bzw. ext_tables.php solltest du schauen wie das price feld eingestellt wird (integer oder char?)
Das wäre die kompliziertere Variante. Am schnellsten wäre es glaub ich einfach die class.tx_ttproducts.php zu erweitern:
Std. mässig hast du bei der Eingabe einer "-1" im Preis eine AUSGABE: Auf Lager
Vielleicht kannst du einfach das ganze erweitern z.b. auf die "-2" -> AUSGABE Auf Anfrage ???
gruss
aNj
anj schrieb
Dein Problem müsstest du soweit ich weiss an 4 Stellen suchen:
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.
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. 😢
hallo
ich sitze grad am gleichen problem! hast du oder irgendwer da ne lösung gefunden?
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';
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
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
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!
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
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.
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