Hallo :D
Ich habe einen Konfigurator welcher (in Kurzfassung) im Backend den Kategorien oder Artikeln Auswahllisten hinzufügen kann. Im Frontend steht dann in der Artikelseite, als auch im Warenkorb unter dem Artikel, eine Auswahlliste als DropDownMenu. Dies funktioniert auch gut, außer bei Bundles im Warenkorb.
Damit die Änderungen, welche man in dem Warenkorb durchführen kann, auch übernommen werden, habe ich ein kleines Script welches bei click die Seite neu ladet. Die Änderungen bei den Artikeln werden übernommen, jedoch nicht die Änderungen bei Bundles (es wird einfach auf die Standardmäßige Auswahl zurückgesetzt).
Mich wundert das, da in der DB die Bundles zwar in einer eigenen Zeile aufgelistet werden, jedoch nur Verbindungen zu den Artikeln sind.
Falls wer Zeit / Lust oder eine Herausforderung sucht kann mir gerne helfen :D
EDIT: Dass ist das model für die Bundles.
Ich habe einen Konfigurator welcher (in Kurzfassung) im Backend den Kategorien oder Artikeln Auswahllisten hinzufügen kann. Im Frontend steht dann in der Artikelseite, als auch im Warenkorb unter dem Artikel, eine Auswahlliste als DropDownMenu. Dies funktioniert auch gut, außer bei Bundles im Warenkorb.
Damit die Änderungen, welche man in dem Warenkorb durchführen kann, auch übernommen werden, habe ich ein kleines Script welches bei click die Seite neu ladet. Die Änderungen bei den Artikeln werden übernommen, jedoch nicht die Änderungen bei Bundles (es wird einfach auf die Standardmäßige Auswahl zurückgesetzt).
Mich wundert das, da in der DB die Bundles zwar in einer eigenen Zeile aufgelistet werden, jedoch nur Verbindungen zu den Artikeln sind.
Falls wer Zeit / Lust oder eine Herausforderung sucht kann mir gerne helfen :D
PHP Code:
<?php
class hi_bundles_basket extends hi_bundles_basket_parent{
protected function _addBundles()
{
// iterating through articles and binding bundles
foreach ( $this->_aBasketContents as $key => $oBasketItem ) {
try {
// adding discount type bundles
if ( !$oBasketItem->isDiscountArticle() && !$oBasketItem->isBundle() ) {
$aBundles = $this->_getItemBundles( $oBasketItem );
} else {
continue;
}
$this->_addBundlesToBasket( $aBundles );
// adding item type bundles
$aBundles = $this->_getArticleBundles( $oBasketItem );
// adding bundles to basket
$this->_addBundlesToBasket( $aBundles );
//hook :)
$db = oxDB::getDb();
$db_res = $db->getAll("SELECT article, SUM(amount) FROM hi_article_in_bundle WHERE bundle IN (SELECT bundle FROM hi_bundle2article WHERE article = ".$db->quote($oBasketItem->getProductId()).") GROUP BY article" );
//$aBundles = array();
foreach($db_res as $row){
//echo $row[0]." - ".$row[1]."<br>";
$addToBasket = $db->getOne("SELECT 1 FROM oxarticles WHERE oxid = ".$db->quote($row[0])." AND ( oxactive = 1 OR ( CURRENT_TIMESTAMP >= oxactivefrom AND CURRENT_TIMESTAMP <= oxactiveto ))");
if($addToBasket){
$bi = parent::addToBasket($row[0], $row[1]*$oBasketItem->getAmount(), false, null, null, true);
// $bi->setAsDiscountArticle( false );
} else {
die($row[0]." Produkt existiert nicht");
//DO NOT ADD WHEN INACTIVE.. error instead..
}
}
// end hook :)
}
catch ( oxNoArticleException $oEx ) {
// $this->removeItem( $key );
oxUtilsView::getInstance()->addErrorToDisplay( $oEx );
}
catch( oxArticleInputException $oEx ) {
// $this->removeItem( $key );
oxUtilsView::getInstance()->addErrorToDisplay( $oEx );
}
}
// adding global basket bundles
if ( $aBundles = $this->_getBasketBundles() ) {
$this->_addBundlesToBasket( $aBundles );
}
}
}