Как вывести способы оплаты в виде таблицы в Drupal Commerce

Для того, чтобы вывести доступные способы оплаты заказа в виде таблицы в Drupal Commerce, необходимо добавить следующий код в свой модуль:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function example_form_commerce_checkout_form_review_alter(&$form, &$form_state) {
  $header = array(
    'payment' => t('Payment'),
    'description' => t('Description'),
  );
  
  $checkout_pane = commerce_checkout_pane_load('commerce_payment');
  foreach ($form['commerce_payment']['payment_method']['#options'] as $key => $option) {  
    $method_info = $form['commerce_payment']['...
Benya

Как создать дополнительную страницу в оформлении заказа в Drupal Commerce

Для начала имплементируем хук hook_commerce_checkout_page_info, в нем нам необходимо добавить информацию о создаваемой странице. Список возможных свойств страницы:

  • page_id - машинное имя страницы, допускается использование строчных букв и цифр, а так же символов "-", "_"
  • title - название страницы, используемое при оформлении заказа
  • name - переводимое название страницы, используемое в административных страницах, а так же соответствует статусу заказа на данной странице, если не указано, то по умолчанию используется название страницы
  • help - переводимый текст, который будет показан...
Benya

Делаем красивое уведомление при добавлении товара в корзину в Drupal Commerce

Сегодня я расскажу о том, как сделать красивое уведомление, в котором будет показываться информация об добавляемом товаре после добавления товаров в корзину в Drupal Commerce с помощью Ctools modal API.

Для начала, создадим вьюз, который будет принимать аргумент добавляемого товара и выводить информацию о нем. Это придаст гибкости и в случае необходимости изменения информации о товаре нам не надо будет лезть в код. Показывать сам вьюз я не буду - это будет маленькое домашнее задание.

После того, как создали вьюз, первым делом создаем модуль, который поможет решить поставленную...

Benya

Как узнать, в каких модулях был изменен код?

Совсем недавно получил задание обновить на сайте ядро и модули. Сайт мне не знаком и видел я его впервые. Опыт обновления незнакомых мне сайтов уже есть и я подумал, хорошо бы для начала узнать, есть ли хакнутые модули и имеет ли смысл браться за такое задание.

Долго искать не пришлось, в сети уже имеется готовое решение данного вопроса в виде модуля Hacked!. Скачиваем и включаем модуль, после чего идем на страницу admin/reports/hacked и запускаем батч. После завершения работы батча будет сформирована страница со всеми модулями и их статусом, вот, что увидел я:...

Benya

Ошибка при создании вариантов товара и способ ее решения при использовании модуля Inline Entity Form

Совсем недавно столкнулся с ошибкой при использовании модулей Drupal Commerce и Inline Entity Form. Суть ошибки заключается в том, что у товара имеется 2 атрибута: цвет и размер. В качестве атрибутов используется два словаря "цвета" и "размеры" соответственно. При создании товаров в обоих полях используются виджеты Autocomplete term widget.

Вот тут и начинаются все проблемы, при создании нового товара, в момент добавления вариантов если атрибуты добавляются первый раз (их еще нет в словаре), они (атрибуты) начинают дублироваться и логика работы ломается:

...

Benya

Как сделать правильное склонение для множественных чисел в Drupal

Сегодня впервые столкнулся с проблемой правильного склонения множественного числа. Для английского языка данная проблема не актуальна, так как там всего два варианта: 1 item, 5 items.

В русском же языке существует 3 формы множественного числа: 1 элемент, 2 элемента, 11 элементов.

Напомню, что в Drupal числа во множественном числе выводятся с помощью функции format_plural($count, $singular, $plural, array $args = array(), array $options).

Параметры

  • $count - число для подстановки;
  • $singular - строка в единственном числе. Не используйте @count в этой строке;
  • $plural - строка для...
Benya

Модули, которые должны быть на каждом сайте.

Сегодня я кратко опишу модули, которые должны присутствовать на каждом сайте. Некоторые из этих модулей улучшают юзабилити, другие предназначены для оптимизации сайта, а некоторые ускоряют и облегчают жизнь разработчикам.

Обязательные модули

  • admin_menu - должен быть на каждом сайте, ускоряет навигацию по административным страницам сайта. Для любителей стандартного тулбара имеется модуль Administration menu Toolbar style (входит в состав модуля admin_menu);
  • module_filter - изменяет вид стандартной страницы с модулями. Благодаря ему, поиск нужного модуля гораздо быстрее;
  • l10n_update...
Benya

Как создать панель для оформления заказа в Drupal Commerce

Первым делом имплементируем хук hook_commerce_checkout_pane_info, в нем нам необходимо добавить информацию о создаваемой панели. Полный список свойств панели:

  • pane_id - машинное имя панели, допускается использование строчных букв и цифр, а так же символов "-", "_"
  • title - название панели
  • name - имя панели, используемое при отображении на административных страницах, если не указано, используется title
  • page - page_id на странице оформления заказа на которой панель должна появиться по умолчанию; по умолчанию checkout
  • collapsible - будет ли панель сворачиваемая; по умолчанию FALSE
  • ...
Benya