tt_products Lieferkosten-berechnungs-skript

Berechnungsscript für tt_products

Wer die TYPO3 Extension tt_products schon mal benutzt hat weiss das man die Preise für die Lieferung der Produkte mit einem Script auf seine Bedürfnisse Anpassen kann.

plugin.tt_products.payment >
plugin.tt_products.payment {
  radio=0
  10.title = Bezahlung mit Rechnung
  20.title = Bezahlung mit Paypal
    
  plugin.tt_products.shipping {
    
    10 {
      title = Bezahlung mit Rechnung
      price =
      TAXincluded=1
      excludePayment=20
      price.type = count
      calculationScript = fileadmin/templates/script/script.php
    }
    
    20 {
      title = Bezahlung mit Paypal
      price =
      TAXincluded=1
      excludePayment=10
      price.type = count      
      calculationScript = fileadmin/templates/script/script.php
    }
  }
}
Ins setup der TYPO3 Installation

Die Anforderung in diesem Beispiel:
Egal wie viele Produkte im Warenkorb vorhanden sind es soll nur der höchste Lieferpreis eines Produktes verrechnet werden.

Da man den Lieferpreis pro Produkt angeben kann, und tt_products naturgemäss einfach alle Lieferpreise der Produkte zusammenzählt muss man diese Anforderung das nur der Höchste Lieferpreis verrechnet wird mit eben diesem Script regeln.

Das Script liegt im fileadmin, drum muss man evt noch erlauben das dort Dateien mit der Endung PHP hochgeladen werden dürfen.
Dafür habe ich in der localconf.php folgende Zeilen:

$TYPO3_CONF_VARS['BE']['fileExtensions']['webspace']['deny'] = 'php3,php4,php5'; //Endung .php weglassen
$TYPO3_CONF_VARS['BE']['fileDenyPattern'] = '';
Datei Localconf.php

...und hier noch der Inhalt des Berechnungsscript. Es werden die einzelnen Lieferpreis-Werte aus dem verschachtelten Array gelesen und nach dem grössten verglichen...

<?php

$calculatedArray=$this->basket->itemArray;
  
$wert="0";
  
foreach($calculatedArray as $key => $values)
                                          {
    foreach($values as $key2 => $values2)   {
     
      foreach($values2 as $key3 => $values3)   {
        
        if(is_array($values3)){
          
          foreach($values3 as $key4 => $values4)               
            if($key4=="shipping"){
              if($wert<$values3[shipping]){
                $wert=$values3[shipping];
              }
            }
          }  
        }    
      }    
    }
  }  
  
$this->basket->calculatedArray['priceTax']['shipping']=$wert;
$this->basket->calculatedArray['priceNoTax']['shipping']=$wert;
  
return;
?> 
Datei script.php