Как создать пользовательский AJAX progress type

В Drupal 7 по умолчанию существует два AJAX progress type: 'throbber' (используется по умолчанию) и 'bar'. Установить AJAX progress type можно следующим образом:

$form['actions']['submit']['#ajax'] = array(
  'callback' => 'example_ajax_submit',
  'progress' => array('type' => 'bar'),
);

Для примера, я покажу, как сделать, чтобы во время работы AJAX у кнопки, на которой навешен AJAX обработчик менялось название. Пользовательский AJAX progress type я назвал example_progress. Установим наш progress type:

$form['actions']['submit']['#ajax'] = array(
  'callback' => '...
Benya

Как программно создать image style

Пример кода, который позволяет создать image style программно:

/**
 * Implements hook_image_default_styles().
 */
function example_image_default_styles() {
  $styles = array();

  $styles['example_style_one'] = array(
    'label' => 'Style one (610x300)',
    'effects' => array(
      array(
        'name' => 'image_scale',
        'data' => array('width' => 610, 'height' => 300, 'upscale' => TRUE),
        'weight' => 0,
      ),
    ),
  );
  $styles['example_style_two'] = array(
    'label' => 'Style two (460x290)',
    'effects' => array(
      array(
        'name' => '...
Benya

Создаем пользовательскую AJAX команду

Сегодня я покажу, как правильно создавать пользовательские AJAX команды. В качестве примера, я создам команду, которая будет менять цвет ссылок. Команда будет называться color_links.

Для начала в своем модуле в *.js файле создаем команду:

(function($) {

  /**
   * Command to change color of links.
   */
  Drupal.ajax.prototype.commands.color_links = function(ajax, response, status) {
    var wrapper = response.selector;
    var hex = response.hex;

    $(wrapper).find("a").css({ color : hex });
  }
})(jQuery);

Далее в *.module создаем команду:

/**
 * Creates a Drupal Ajax '...
Benya

Как перевести "Order total" в Drupal Commerce

В Drupal Commerce имеется очень неприятная проблема, с которой приходится сталкиваться каждый раз при создании очередного магазина. Проблема тянется очень давно. Почитать начало можно тут, там же ссылки, по которым можно перейти и почитать ишью. Решение, которое предлагается, мне не нравится, потому что ставить дополнительные модули, несущие громоздкий функционал для перевода пары строк - помоему маразм, патчить модули - тоже не интересно, каждый раз при выходе новой версии модуля - тратить время на патч модуля мне как то не интересно.

Какие же есть решения?

Первое решение...

Benya

Как вывести webform в попапе

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

Шаг 1. Создаем страницу, на которую будет посылаться ajax запрос:

/**
 * Implements hook_menu().
 */
function example_menu() {
  $items = array();
  $items['example/%ctools_js/%node'] = array(
    'page callback' => 'example_page_ajax',
    'page arguments' => array(1, 2),
    'access callback' => '_example_node_access',
    'access arguments' => array(2...
Benya

Как переопределить theme функцию в Drupal

Для того, чтобы переопределить theme фунцкию необходимо имплементировать хук hook_theme_registry_alter():

/**
 * Implements hook_theme_registry_alter().
 */
function example_theme_registry_alter(&$theme_registry) {
  // В массиве $theme_registry ключом является название theme функции, определяемое в hook_theme().
  // Массив содержит информацию, возращаемую hook_theme(), а так же дополнительные свойства, добавленные _theme_process_registry().

  // Переопределяем функцию theme_user_signature на theme_example_user_signature.
  $theme_registry['user_signature']['function'] = '...
Benya

Как связать свою сущность с Pathauto в Drupal

Тема сегодняшнего урока это интеграция сущности с модулем Pathauto. Чтобы решить поставленную задачу, необходимо, чтобы сущность поддерживала токены. Как это сделать читайте в моем предыдущем уроке поддержка токенов для своей сущности в Drupal.

И так, переходим от слов к делу, скачиваем модуль Pathauto, открываем product.info и добавляем зависимость:

dependencies[] = pathauto

Зависимость добавили, теперь открываем product.module и имплементируем хук hook_pathauto():

/**
 * Implements hook_pathauto().
 */
function product_pathauto($op) {
  if ($op == 'settings') {
    $settings =...
Benya

Поддержка токенов для своей сущности в Drupal

Сегодня мы поговорим о том, как сделать поддержку токенов для своей сущности. Как и в случае с предыдущим уроком, в котором я рассказывал как связать свою сущность с Views, у нас будет два способа решения данной задачи, один - с помощью модуля Entity API, второй - самописный код.

Способ 1

Данный способ очень прост, включаем модуль Entity tokens, который входит в комплект Entity API и поддержка токенов обеспечена.

Способ 2

Первым делом имплементируем хук hook_token_info():

/**
 * Implements hook_token_info().
 */
function product_token_info() {
  // Описываем новый тип токена.
  $...
Benya