Hallo!
Wenn ich ein Skript zur Berechnung der Versandkosten schreibe und einbinde, erhalte ich anstelle des Warenkorbs nur eine weisse Seite. Das trieb mich ins Logfile, wo ich folgendes fand:
[Sun Aug 28 18:53:19 2005] [error] [client 217.186.152.117] PHP Fatal error: Call to a member function on a non-object in /home/f/fihlon.de/public_html/cms/typo3/ext/tt_products/pi/class.tx_ttproducts.php on line 2415, referer: https://cms.fihlon.de/index.php?id=44&type=1&no_cache=1
Anscheinend ist das dort benutzte Object $TSFE nicht vorhanden und der Zugriff auf dessen Eigenschaften produziert dann augenscheinlich diesen Fehler.
Kann das vielleicht jemand nachvollziehen?
Gruß
McPringle
kannst du mal die Zeile posten, die den Fehler verursacht?
anj schriebkannst du mal die Zeile posten, die den Fehler verursacht?
Aber sicher doch:
$calcScript = $TSFE->tmpl->getFileName($this->basketExtra['shipping.']['calculationScript']);
Gruß
McPringle
ist jetzt nur eine Vermutung ...
in der extension zk_products wird das TSFE über
$GLOBALS["TSFE"]
angesprochen.
wird denn die Variable bei dir irgendwo mit
$TSFE = $GLOBALS["TSFE"];
gesetzt ?
bzw. versuche doch mal mit
t3lib_div::debug($GLOBALS);
auszugeben ..was drin steht ?
vielleicht kommst du dann dahinter...
Da hätte ich eigentlich selbst drauf kommen müssen -- sind meine PHP-Kenntnisse wirklich schon so eingerostet?
Ich habe in der Funktion global $TSFE hinzugefügt und schon gibt es keine Fehlermeldung mehr. Allerdings funktioniert die Berechnung nicht, ich erhalte immer nur 0,00 Euro Versandkosten als Ausgabe.
Meine Konfiguration:
plugin.tt_products {
20.priceTax.type = count
20.calculationScript = fileadmin/tmpl_files/calculate_weight_hermes.inc
20.priceTax =
20.priceNoTax =
}
Das Berechnungsskript habe ich hier aus diesem Forum kopiert und nur geringfügig angepasst:
<?php
$baseAmount = $this->calculatedWeight;
$shippingPrice = 1.00;
if ($baseAmount > 0) { $shippingPrice = 1.00; }
if ($baseAmount > 50) { $shippingPrice = 1.50; }
if ($baseAmount > 100) { $shippingPrice = 2.50; }
if ($baseAmount > 500) { $shippingPrice = 5.00; }
if ($baseAmount > 1000) { $shippingPrice = 10.00; }
if ($baseAmount > 5000) { $shippingPrice = 15.00; }
if ($baseAmount > 10000) { $shippingPrice = 20.00; }
if ($baseAmount > 20000) { $shippingPrice = 30.00; }
if ($baseAmount > 30000) { $shippingPrice = 40.00; }
if ($baseAmount > 40000) { $shippingPrice = 50.00; }
$this->calculatedSums_no_tax["shipping"] = ($shippingPrice / 1.16);
$this->calculatedSums_tax["shipping"] = $shippingPrice;
?>
Ich wäre Dir dankbar, wenn Du noch einen Tip hättest, was bei diesem Zusammenspiel schief gehen könnte.
Danke
McPringle
Dazu ist kein eigenes Skript mehr nötig.
Passe das Beispiel aus dem Manual entsprechend an:
plugin.tt_products.shipping {
10.title = Parcel
10.priceTax.type = weight
10.priceTax.WherePIDMinPrice.155 = 7.5
10.priceTax.1 = 1.5
10.priceTax.500 = 2.5
10.priceTax.1000 =3.5
}
Außerdem müssen alle Skripts an die neuen globalen Variablen $this->calculatedArray und $this->itemArray angepaßt werden.
Flink schriebPasse das Beispiel aus dem Manual entsprechend an:
Hmmm - anscheinend sind alle meine Daten veraltet (in meinem Manual stand davon nix). Ich werde wohl mal aktualisieren müssen - kann ja nicht schaden.
Vielen Dank für den Tip, es funktioniert super!
Gruß
McPringle