Сегодня я покажу, как правильно создавать пользовательские 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 'color_links' command.
*
* This command is implemented by Drupal.ajax.prototype.commands.color_links().
*
* @param $selector
* A jQuery selector string.
* @param $hex
* The hex value.
*
* @return array
* An array suitable for use with the ajax_render() function.
*/
function example_command_color_links($selector, $hex) {
return array(
'command' => 'color_links',
'selector' => $selector,
'hex' => $hex,
);
}
Пример использования:
/*
* Change color of links.
*/
function example_color_links_ajax_callback() {
$commands = array();
$hex = '#ff0000';
$commands[] = example_command_color_links('ul.primary-links', $hex);
return array('#type' => 'ajax', '#commands' => $commands);
}
P.S. Не забываем подключать js перед использованием.