|
Приветствую, прошу помощи по выводу картинок в корзине. Необходимо поправить код, но что то делаю не так ( Код index.php Скрытый текст |
---|
<h2>Корзина</h2> <? CModule::IncludeModule('sale'); $obCalc = new CCalcBasketItems; if( $_SERVER['REQUEST_METHOD'] == "POST" && $_POST['SAVE_BASKET'] == "Y" && strlen($_POST['UPDATE_BASKET'] > 0 { $obBasket = new CSaleBasket; if(SizeOf($_POST['DELETE'] > 0) foreach($_POST['DELETE'] as $ID) $obBasket->Delete($ID); if(SizeOf($_POST['QUANTITY'] > 0){ foreach($_POST['QUANTITY'] as $ID => $QUANTITY){ if(!in_array($ID, $_POST['DELETE'] ){ $obBasket->Update( $ID, array( 'QUANTITY' => $QUANTITY, ; } } } }elseif( $_SERVER['REQUEST_METHOD'] == "POST" && $_POST['SAVE_BASKET'] == "Y" && strlen($_POST['MAKE_ORDER'] > 0 { LocalRedirect("/personal/make-order/" ; } $rsBasket = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" , array( "FUSER_ID" => CSaleBasket::GetBasketUserID(), "LID" => SITE_ID, "ORDER_ID" => "NULL" , false, false, array( "ID", "CALLBACK_FUNC", "MODULE", "PRODUCT_ID", "QUANTITY", "DELAY", "CAN_BUY", "PRICE", "PROPERTIES" ; while ($arBasket = $rsBasket->GetNext(true, false)){ if (strlen($arBasket["CALLBACK_FUNC"] > 0){ CSaleBasket::UpdatePrice( $arBasket["ID"], $arBasket["CALLBACK_FUNC"], $arBasket["MODULE"], $arBasket["PRODUCT_ID"], $arBasket["QUANTITY"] ; $arBasket = CSaleBasket::GetByID($arBasket["ID"] ; } $arBasketList[$arBasket['PRODUCT_ID']] = $arBasket; } $arResult = $obCalc->CalcBasket($arBasketList); ?>
<?if(SizeOf($arResult['ITEMS'] == 0):?> <?ShowError('Ваша корзина пуста');?> <?else:?> <form action="" method="post"> <input type="hidden" name="SAVE_BASKET" value="Y" /> <div class="total"> Сумма товаров: <?=$arResult['PRINT_SUMM'];?><br /> Сумма товаров с учетом скидки: <?=$arResult['PRINT_SUMM_WITH_DISCOUNT'];?><br /><br /> <input type="submit" name="UPDATE_BASKET" value="Обновить" class="refrechbusk" /> <input type="submit" name="MAKE_ORDER" value="Оформить заказ" class="refrechbusk" /> </div> <?endif;?>
|
basket_calc.php Скрытый текст |
---|
<?
// if(class_exists('CCalcBasketItems')) return; class CCalcBasketItems{ private $arPriceDisconut = array(); private $arParams = array(); function __construct(){ if(!CModule::IncludeModule('iblock')) return false; $this->arParams = array( 'MAIN_IBLOCK_ID' => 9, 'SECOND_IBLOCK_ID' => 10, "ITEM_TYPE" => "TYPE", "CML2_LINK" => "CML2_LINK", "ORDER_PROPERTY" => "ORDER_PROPERTY", "ITEM_STATUS_PROPERTY" => "TYPE", "ITEM_SPECIAL_OFFER" => "SPECIAL_OFFER", "BLOCK_ITEM_STATUS" => array( "VIP", "Распродажа", // "NEW", ; // величина скидки в зависимости от общей суммы заказа в корзине $this->arPriceDisconut = array( array( "FROM" => 0, "TO" => 3499, "DISCOUNT" => 0, , array( "FROM" => 3500, "TO" => 4999, "DISCOUNT" => 0, , array( "FROM" => 5000, "TO" => 6999, "DISCOUNT" => 0, , array( "FROM" => 7000, "TO" => 59999, "DISCOUNT" => 0, , array( "FROM" => 60000, "TO" => 0, "DISCOUNT" => 0, , ; } function GetDiscount($PRICE){ foreach($this->arPriceDisconut as $arDiscount){ if( doubleval($PRICE) >= intval($arDiscount['FROM'] && doubleval($PRICE) <= doubleval($arDiscount['TO'] return doubleval($arDiscount['DISCOUNT'] ; } return (($this->arPriceDisconut[SizeOf($this->arPriceDisconut)-1]['TO'] == 0) && (doubleval($PRICE) > doubleval($this->arPriceDisconut[SizeOf($this->arPriceDisconut)-1]['FROM'] )) ? $this->arPriceDisconut[SizeOf($this->arPriceDisconut)-1]['DISCOUNT'] : 0; } function GetBasketPriceWithDiscount($arFields){ $NewPrice = false; if(intval($arFields['DISCOUNT'] > 0 && $arFields['CAN_USE'] { $NewPrice = array( 'PRICE' => doubleval($arFields['PRICE'] - (($arFields['PRICE'] / 100) * $arFields['DISCOUNT'] ), 'CURRENCY' => $arFields['CURRENCY'], ; $NewPrice['PRINT_PRICE'] = SaleFormatCurrency($NewPrice['PRICE'], $NewPrice['CURRENCY'] ; } return array( 'OLD' => array( 'PRICE' => doubleval($arFields['PRICE'] , 'CURRENCY' => $arFields['CURRENCY'], 'PRINT_PRICE' => SaleFormatCurrency($arFields['PRICE'], $arFields['CURRENCY'] , , 'NEW' => $NewPrice, ; } function CalcBasket($arFields){ $BasketPrice = $this->GetBasketPrice($arFields); $BasketDiscount = $this->GetDiscount($BasketPrice);
// if( // doubleval($BasketDiscount) == 0 // || doubleval($BasketPrice) == 0 // ) return false; $arProduct = array_keys($arFields); if(SizeOf($arProduct) == 0) return; $rsElement = CIBlockElement::GetList( array(), array( "IBLOCK_ID" => $this->arParams['SECOND_IBLOCK_ID'], "ID" => $arProduct, , false, false, array( "ID", "PROPERTY_".$this->arParams['CML2_LINK'], "PROPERTY_".$this->arParams['ORDER_PROPERTY'], ; while($arElement = $rsElement->GetNext(true, false)){ $arMainElement[$arElement['PROPERTY_'.$this->arParams['CML2_LINK'].'_VALUE']][] = $arElement['ID']; $arMainLink[$arElement['ID']] = $arElement['PROPERTY_'.$this->arParams['CML2_LINK'].'_VALUE']; if(SizeOf($arElement['PROPERTY_'.$this->arParams['ORDER_PROPERTY'].'_VALUE'] > 0){ foreach($arElement['PROPERTY_'.$this->arParams['ORDER_PROPERTY'].'_VALUE'] as $__index => $__value){ $arBasketProperty[$arElement['ID']][] = array( "NAME" => $arElement['PROPERTY_'.$this->arParams['ORDER_PROPERTY'].'_VALUE'][$__index], "VALUE" => $arElement['PROPERTY_'.$this->arParams['ORDER_PROPERTY'].'_DESCRIPTION'][$__index] ; } } } if(SizeOf(array_keys($arMainElement)) == 0) return false; $rsElement = CIBlockElement::GetList( array(), array( "IBLOCK_ID" => $this->arParams['MAIN_IBLOCK_ID'], "ID" => array_keys($arMainElement), , false, false, array( "ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "PREVIEW_TEXT", "PROPERTY_".$this->arParams['ITEM_STATUS_PROPERTY'], "PROPERTY_".$this->arParams['ITEM_SPECIAL_OFFER'], ; while($arElement = $rsElement->GetNext(true, false)){ $arElementList[$arElement['ID']] = array( "NAME" => $arElement['NAME'], "DETAIL_PAGE_URL" => $arElement['DETAIL_PAGE_URL'], "PREVIEW_PICTURE" => (intval($arElement['PREVIEW_PICTURE'] > 0) ? CFile::GetFileArray($arElement['PREVIEW_PICTURE'] : false, "PREVIEW_TEXT" => ($arElement['PREVIEW_TEXT_TYPE'] == "html" ? htmlspecialcharsBack(htmlspecialcharsBack($arElement['PREVIEW_TEXT'] ) : $arElement['PREVIEW_TEXT'], "TYPE" => $arElement['PROPERTY_'.$this->arParams['ITEM_STATUS_PROPERTY'].'_VALUE'], "SPECIAL_OFFER" => $arElement['PROPERTY_'.$this->arParams['ITEM_SPECIAL_OFFER'].'_VALUE'], ; }
foreach($arFields as $__index => $arBasket){ $arFields[$__index]['NAME'] = $arElementList[$arMainLink[$arBasket['PRODUCT_ID']]]['NAME']; $arFields[$__index]['PREVIEW_PICTURE'] = $arElementList[$arMainLink[$arBasket['PRODUCT_ID']]]['PREVIEW_PICTURE']; $arFields[$__index]['DETAIL_PAGE_URL'] = $arElementList[$arMainLink[$arBasket['PRODUCT_ID']]]['DETAIL_PAGE_URL']; $arFields[$__index]['PROPERTY'] = $arBasketProperty[$__index]; $arFields[$__index]['PRICE'] = $this->GetBasketPriceWithDiscount( array( 'PRICE' => $arBasket['PRICE'], 'CURRENCY' => $arBasket['CURRENCY'], 'DISCOUNT' => $BasketDiscount, 'CAN_USE' => $this->CanUseDiscount( $arElementList[$arMainLink[$arBasket['PRODUCT_ID']]]['TYPE'], $arElementList[$arMainLink[$arBasket['PRODUCT_ID']]]['SPECIAL_OFFER'] , ; } foreach($arFields as $__index => $arBasket){ $BasketPriceWithDiscount += (is_array($arBasket['PRICE']['NEW'] ) ? doubleval($arBasket['PRICE']['NEW']['PRICE'] * $arBasket['QUANTITY'] : doubleval($arBasket['PRICE']['OLD']['PRICE'] * $arBasket['QUANTITY'] ; $PRICE = (is_array($arBasket['PRICE']['NEW'] ) ? $arBasket['PRICE']['NEW']['PRICE'] : $arBasket['PRICE']['OLD']['PRICE']; $arFields[$__index]['SUMM'] = array( 'PRICE' => doubleval($PRICE * $arBasket['QUANTITY'] , 'PRINT_PRICE' => SaleFormatCurrency(doubleval($PRICE * $arBasket['QUANTITY'] , $arBasket['CURRENCY'] , ; } return array( 'SUMM' => $BasketPrice, 'SUMM_WITH_DISCOUNT' => $BasketPriceWithDiscount, 'PRINT_SUMM' => SaleFormatCurrency($BasketPrice, "RUB" , 'PRINT_SUMM_WITH_DISCOUNT' => SaleFormatCurrency($BasketPriceWithDiscount, "RUB" , 'ITEMS' => array_values($arFields) ; } private function CanUseDiscount($ELEMENT_TYPE = false, $SPECIAL_OFFER = 0){if($SPECIAL_OFFER == 1) return false; return (in_array($ELEMENT_TYPE, $this->arParams['BLOCK_ITEM_STATUS'] ) ? false : true;} private function GetBasketPrice($arFields){foreach($arFields as $arBasket) $PRICE += $arBasket['PRICE'] * $arBasket['QUANTITY']; return $PRICE;} private function GetBasketDiscount($arFields){return $this->GetDiscount($this->GetBasketPrice($arFields));} public function ShoppingCart($arFields, $ORDER_ID){ if(!CModule::IncludeModule('sale')) return false; if($ORDER_ID === false) return false; $obBasket = new CSaleBasket; foreach($arFields as $arBasket): if(doubleval($arBasket['PRICE']['NEW']['PRICE'] > 0): $obBasket->Update( $arBasket['ID'], array( "PRICE" => $arBasket['PRICE']['NEW']['PRICE'], ; endif; endforeach; $obBasket->OrderBasket($ORDER_ID); } } ?>
|
|