Drupal Commerce – подключаем плагин изменения количества товара

07 мая 2014 - 17:35

В Drupal Commerce «из коробки» нет js-виджета для изменения количества товара в форме добавления в корзину. Поэтому разработчикам приходится самостоятельно подключать дополнительные плагины. Есть, правда, еще модуль Commerce Extra, однако, судя по всему, он уже заброшен разработчиками.

В данной статье я опишу способ добавления виджета изменения количества товаров с помощью jquery-плагина Spinner. Этот плагин доступен с версии 1.9 Jquery UI, поэтому для его подключения вначале установим модуль Jquery Update (последняя версия данного модуля заменяет библиотеку Jquery UI ядра Drupal на 1.10).

После установки Jquery Update в template.php темы сайта с помощью хука hook_form_alter подключим плагин Spinner для страниц-нод с отображением товаров, а также для формы корзины:

function THEME_form_alter(&$form, &$form_state, $form_id) {
  if (strstr($form_id, 'commerce_cart_add_to_cart_form') || ($form_id == 'views_form_commerce_cart_form_default')) {
    drupal_add_library('system', 'ui.spinner');
    $form['#attached']['js'] = array(
      drupal_get_path('theme', 'THEME') . '/commerce_spinner.js',
    );
  }
}

Напомню, что THEME необходимо заменить названием темы, а также сбросить кеш сайта.

Теперь в скрипте commerce_spinner.js темы вызовем метод spinner для полей ввода количества на страницах товаров и в форме корзины:

(function($) {
  Drupal.behaviors.addSpinner = {
    attach : function(context, settings) {
      $(".commerce-add-to-cart .form-item-quantity input, .views-field-edit-quantity input").spinner({
        min:1,
        max:99,
      });
    }
  }
})(jQuery);

Теперь поля будут иметь кнопки-стрелки для уменьшения и увеличения количества товаров, как показано на рисунке:

Виджет изменения количества товаров в Drupal Commerce