Verarbeitung der Auswahllisten

Hallo,

an welcher Stelle im Quellcode werden die Änderungen in den Auswahllisten vorgenommen, wenn man den Warenkorb aktualisiert?

Ich finde es einfach nicht.

Gruß
Thoni

Für gewöhnlich wird widget/product/selectbox.tpl eingebunden. Dabei ist dann darauf zu achten, ob “editable” oder nicht.

siehe auch: http://forum.oxid-esales.com/showthread.php?t=21069&highlight=Auswahllisten#post135005

Danke rubbercut,

ich habe mich ungenau ausgedrückt.

Wenn der User den Warenkorb aktualisiert, werden die ausgewählten Produkte und der Preis ggf aktualisiert.
An welcher Stelle im Core wird das in PHP gemacht?

In bestimmten Fällen muss ich die Änderungen unterbinden.

Das sollte

oxcmp_basket->changebasket(); 

sein.

[QUOTE=rubbercut;189580]Das sollte

oxcmp_basket->changebasket(); 

sein.[/QUOTE]

Die Funktion habe ich schon gefunden, aber ich komme damit nicht klar.
Schalte ich sie aus, so werden natürlich auch die Mengen nicht aktualisiert, was aber weiterhin funktionieren muss.

Im Prinzip würde es mir genügen, wenn die Funktion nur die Mengen aktualisiert, aber mein Versuch bringt keine Veränderung:


$oBasket = oxRegistry::getSession()->getBasket();
foreach($oBasket->getContents() AS $key => $cartPos)
{
	if($newAmount = oxRegistry::getConfig()->getRequestParameter( $key ))
	{
	$cartPos->setAmount($newAmount[am]);
	$oBasket->calculateBasket( true );
	$oBasket->onUpdate();
	}
}
return true;

Bsp: Erweiterung oxcmp_basket

$oBasket = $this->getSession()->getBasket();
			
$oBasket->onUpdate();

$this->_setLastCallFnc( 'changebasket' );

foreach ( $oBasket->getContents() as $basketindex => $oBasketItem ) 
{
     ...
}
$oBasket->calculateBasket( true );

Vielen Dank rubbercut,

ich habe selbst so viele Fehler eingebaut … :mad:

Hier ist die Lösung, falls es mal jemand braucht:

$oBasket = $this->getSession()->getBasket();

$oBasket->onUpdate();

$this->_setLastCallFnc( 'changebasket' );

foreach ( $oBasket->getContents() as $basketindex => $oBasketItem )
{
    $myData = oxRegistry::getConfig()->getRequestParameter('aproducts');
    $oBasketItem->setAmount($myData[$basketindex]['am']);
}
$oBasket->calculateBasket( true );

[QUOTE=Thoni;189672]Vielen Dank rubbercut,

ich habe selbst so viele Fehler eingebaut … :mad:
[/QUOTE]

Gerne. Jeder fängt mal klein an :wink:

Diese Zeile muss noch in die Schleife, sonst kann man keine Produkte löschen:


    if($myData[$basketindex]['remove'] == 1) $oBasket->removeItem($basketindex);