Делаем красивое уведомление при добавлении товара в корзину в 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 - число для подстановки;
  • ...
Benya

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

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

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

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

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

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

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

Как выполнить js код до и после печати страницы

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

$(window, context).load(function() {
  // То, что выполнится перед открытием диалога печати.
  var beforePrint = function() {
    console.log('Functionality to run before printing.');
  };
 
  // То, что выполнится после закрытия диалога печати.
  var afterPrint = function() {
    console.log('Functionality to run after printing');
  };

  if (this.matchMedia) {
    var mediaQueryList = this.matchMedia('print...
Benya

Как заменить стандартные иконки файлов

Чтобы заменить стандартные иконки файлов необходимо в файле template.php добавить функцию theme_file_icon. Для примера заменим стандартную иконку excel файлов:

function themeName_file_icon($variables) {
  $file = $variables['file'];
  $icon_directory = $variables['icon_directory'];

  $mime = check_plain($file->filemime);
  if ($mime == 'application/vnd.ms-excel') {
    $icon_directory = path_to_theme() . '/images';
  }
  $icon_url = file_icon_url($file, $icon_directory);
  return '<img class="file-...
Benya