Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Ajax Корзина.

00 голосов
7
Возможно ли реализовать помещение товаров в корзину через Ajax, используя стандартные компоненты Битрикса?
Если нет, то какие подводные камни существует при реализации поставлено задачи посредством Битрикс API.
спросил 01 Июнь, 13 от wogich (630 баллов)

7 Ответы

00 голосов
Можно, в новом магазине из маркет-плэйса так и сделано.
ответил 01 Июнь, 13 от Almarea (3,760 баллов)
00 голосов
Цитата
Дмитрий Яковенко пишет:
плэйса

Спасибо.
А что за компонент там используется, если не сложно ответить?
ответил 07 Июнь, 13 от wogich (630 баллов)
00 голосов
Не знаю, еще не добрался посмотреть.
ответил 08 Сен, 13 от Almarea (3,760 баллов)
00 голосов
Можно и на старых шаблонах самому организовать. Самый простой способ описан здесь.
ответил 06 Дек, 13 от Siemka (1,020 баллов)
00 голосов
Ясно. Я тоже сделал с помощью jQuery + Битрикс API.
Появилась новая задача. Корзина (компонент bitrix:sale.basket.basket.line) показывает кол-во позиций, но не учитывает кол-во товаров каждой позиции =). Т.е. если мы находимся на странице товара 1 и добавляем его несколько раз, то компонент только один раз изменит кол-во товаров. С помощью Ajax + Битркис API решил эту проблему. Но при перезагрузке странице, компонент bitrix:sale.basket.basket.line срабатывает снова по своему =).
Придется компонент переделывать?
ответил 20 Март, 14 от wogich (630 баллов)
00 голосов
Да там переделывать особо нечего, только прописать array('SUM'=>'QUANTITY')
ответил 12 Июль, 14 от Eddie (2,060 баллов)
00 голосов
Цитата
Дмитрий Якинцев пишет:
Да там переделывать особо нечего, только прописать array('SUM'=>'QUANTITY')

Нет, не только.
Для тех, кому интересно выкладываю.
Код
/*<< marat 03.09.10
if(isset($_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID]))
{
   $num_products = $_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID];
}
else
{   */
   if(!CModule::IncludeModule("sale")){
      ShowError(GetMessage("SALE_MODULE_NOT_INSTALL"));
      return;
   }   
   $fUserID = CSaleBasket::GetBasketUserID(True);
   $fUserID = IntVal($fUserID);
   $num_products = 0;
   if ($fUserID > 0){
      $cart_items = CSaleBasket::GetList(
         array(),
         array('FUSER_ID' => $fUserID, 'LID' => SITE_ID, 'ORDER_ID' => 'NULL', 'CAN_BUY' => 'Y', 'DELAY' => 'N'),
         array('SUM' => 'QUANTITY'),
           false,
           array('ID', 'QUANTITY')
      );
      $cart_items_array = $cart_items->Fetch();
      $num_products = intval($cart_items_array['QUANTITY']);    
   }
   $_SESSION["SALE_BASKET_NUM_PRODUCTS"][SITE_ID] = $num_products;
//}
//<< marat 03.09.10   
ответил 12 Ноя, 14 от wogich (630 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 10 Дек, 13 от Jezzy (100 баллов)
0 голосов
0 ответов
спросил 15 Ноя, 13 от Evenka (520 баллов)
0 голосов
2 ответов
спросил 07 Окт, 13 от Tei (480 баллов)
0 голосов
1 ответ
0 голосов
0 ответов
спросил 24 Дек, 13 от ebs_di (120 баллов)