xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Как в Ubercart добавить товар в корзину с помощью AJAX

Опубликовано в

Пример добавления в корзину товара с nid 123.

Javascript:

// Посылаем AJAX запрос
$.post(Drupal.settings.basePath + 'ajax-add-to-cart', {nid:123}, function(response) {
  response = Drupal.parseJson(response);
 
  // Показываем сообщение если что-то пошло не так
  if (!response.status) {
    return alert(response.data);
  }
 
  // Обновляем блок с корзиной
  $('#block-uc_cart-0 .content').html(response.data);
});

PHP:

/**
 * Реализация hook_menu()
 */
function mymodule_menu() {
  $items['ajax-add-to-cart'] = array(
    'page callback' => 'mymodule_ajax_add_to_cart',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}
 
/**
 * Menu callback
 */
function mymodule_ajax_add_to_cart() {
  if (!isset($_POST['nid'])) {
    return;
  }
  // Добавляем товар в корзину
  uc_cart_add_item((int)$_POST['nid'], 1, NULL, NULL, FALSE);
  // Получаем содержимое блока корзины
  $block = module_invoke('uc_cart', 'block', 'view', 0);
  // Возвращаем содержимое блока корзины
  drupal_json(array('status' => TRUE, 'data' => $block['content']));
}
Написанное актуально для Ubercart 6.x-2.x
Похожие записи

Комментарии RSS

Есть же ж готовый модуль http://drupal.org/project/uc_ajax_cart

я в курсе

Скажите а при кешировании блоков этот модуль будет работать ?

это не модуль, а кусок кода ;) при кэшировании работать будет

Вот так правильные добавлять:

uc_cart_add_item($idn, 1, module_invoke_all('uc_add_to_cart_data', array('nid'=>$idn)));

Я не силен в програмирывании, я так и не понял куда конкретно вставлять этот код?

для не сильных в "програмирывании" есть готовые модули

Привет. Не подскажеш, Модуль аджекс карт для анонимных пользователь в режиме кеширования работать не будет?

Новая аджакс корзина для уберкарт:
Acar - ajax cart for ubercart
http://www.drupal.ru/node/80901
http://u6167.moko.vps-private.net

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании