|
Приветствую, прошу помощи по выводу картинок в корзине. Необходимо поправить код, но что то делаю не так ( Код 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" /> <table class="busketbl" border="0" cellpadding="5" cellspacing="1"> <thead> <tr> <th colspan="2">Товар</th> <th>Цена</th> <th>Количество</th> <th>Сумма</th> <th>Удалить</th> </tr> </thead> <tbody> <?foreach($arResult['ITEMS'] as $arBasket):?> <tr> <td valign="middle" align="left">
<?if(is_array($arBasket['PREVIEW_PICTURE'] ;) ):?> <a href="<?=$arBasket['DETAIL_PAGE_URL']?>"><img border="0" src="<?=CFile::GetPath($arBasket["PREVIEW_PICTURE"] ;) ?>" width="120px" alt="<?=$arBasket['NAME']?>" title="<?=$arBasket['NAME']?>" /></a> <?elseif($arBasket['PROPERTIES']['FOTO']['VALUE']['0'] ;) :?> <a href="<?=$arBasket['DETAIL_PAGE_URL']?>"><img border="0" src="<?=CFile::GetPath($arBasket['PROPERTIES']['FOTO']['VALUE']['0'] ;) ?>" width="120px" alt="<?=$arBasket['NAME']?>" title="<?=$arBasket['NAME']?>" /></a> <?else:?> <a href="<?=$arBasket['DETAIL_PAGE_URL']?>"><img border="0" src="<?=SITE_TEMPLATE_PATH?>/images/nopicture.jpg" width="120px" alt="<?=$arBasket['NAME']?>" title="<?=$arBasket['NAME']?>" /></a> <?endif;?> </td> <td valign="middle" align="left"> <a href="<?=$arBasket['DETAIL_PAGE_URL'];?>"><?=$arBasket['NAME'];?></a> <?if(StrLen($arBasket['PREVIEW_TEXT'] ;) > 0):?> <?=$arBasket['PREVIEW_TEXT'];?> <?endif;?> <?foreach($arBasket['PROPERTY'] as $arProperty):?> <?=$arProperty['NAME'];?>: <?=$arProperty['VALUE'];?><br /> <?endforeach;?> </td> <td valign="middle" align="center"> <?if(is_array($arBasket['PRICE']['NEW'] ;) ):?> <s><?=$arBasket['PRICE']['OLD']['PRINT_PRICE'];?></s> <p class="pricebusk"><?=$arBasket['PRICE']['NEW']['PRINT_PRICE'];?></p> <?else:?> <p class="pricebusk"><?=$arBasket['PRICE']['OLD']['PRINT_PRICE'];?></p> <?endif;?> </td> <td valign="middle" align="center"> <input type="text" name="QUANTITY[<?=$arBasket['ID'];?>]" class="quantbusk" value="<?=intval($arBasket['QUANTITY'] ;) ;?>" size="5" /> </td> <td valign="middle" align="center"><?=$arBasket['SUMM']['PRINT_PRICE'];?></td> <td valign="middle" align="center"> <input type="checkbox" name="DELETE[]" value="<?=$arBasket['ID'];?>" class="chkbxbusk" /> </td> </tr> <?endforeach;?> </tbody> </table> <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); } } ?>
|
|