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

15.09.2011

Пример добавления в корзину товара с 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
Похожие записи

Комментарии

Евгений
15.09.2011, 16:33

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

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

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

uc_cart_add_item($idn, 1, module_invoke_all('uc_add_to_cart_data', array('nid'=>$idn)));
Гость
27.11.2011, 17:57

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

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

Добавить комментарий