drupal_alter

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/common.inc, строка 2767

Версии
6
drupal_alter($type, &$data)

Эта функция отправки в автоматическом режиме преобразует структурированные массивы Drupal в типовые *_alter реализации. Она обеспечивает общий интерфейс для всеx операций изменения.

Параметры

$type Тип структурированного массива, например 'form', 'links', 'node_content' и другие.

$data Структурированный массив, который следует изменить

... Любые дополнительные параметры будут переданы в функции, называющиеся hook_$type_alter.

▾ 18 функции вызывают drupal_alter()

actions_list in includes/actions.inc
Находит все действия (actions) путем вызова hook_action_info().
comment_render in modules/comment/comment.module
Отображает комментарии.
drupal_get_schema in includes/common.inc
Возвращает схему определенной таблицы или всей базы данных сайта.
drupal_mail in includes/mail.inc
Отправляет сообщения по e-mail.
drupal_prepare_form in includes/form.inc
Подготавливает полный массив формы, добавляя в него недостающие значения по-умолчанию, вызывая нужные хуки, а также, опционально, выставляя токены валидации для некоторых полей, чтобы обезопасить форму от несанкционированных вмешательств.
locale_block in modules/locale/locale.module
Реализация hook_block(). Отображает переключатель языков. Ссылки могут быть предоставлены другими модулями.
menu_link_save in includes/menu.inc
Сохраняет ссылку меню.
menu_router_build in includes/menu.inc
Собирает, изменяет и хранит определения меню и элементов.
module_rebuild_cache in includes/module.inc
Обновляет кеш файлов модулей.
node_view in modules/node/node.module
Генерирует вывод ноды.
taxonomy_link in modules/taxonomy/taxonomy.module
Реализация hook_link().
update_calculate_project_data in modules/update/update.compare.inc
Определяет текущий статус обновления сайта по данным установленных модулей, а также доступных релизов, полученных от внешних серверов.
update_get_projects in modules/update/update.compare.inc
Fetch an array of installed and enabled projects.
upload_js in modules/upload/upload.module
Коллбэк меню для JavaScript загрузок файлов.
user_build_content in modules/user/user.module
Строит структурированный массив, представляющий содержимое профиля пользователя.
_menu_link_translate in includes/menu.inc
This function is similar to _menu_translate() but does link-specific preparation such as always calling to_arg functions.
_system_theme_data in modules/system/system.module
Helper function to scan and collect theme .info data and their engines.
_theme_build_registry in includes/theme.inc
Rebuild the hook theme_registry cache.

Код

<?php
function drupal_alter($type, &$data) {
  // PHP's func_get_args() always returns copies of params, not references, so
  // drupal_alter() can only manipulate data that comes in via the required first
  // param. For the edge case functions that must pass in an arbitrary number of
  // alterable parameters (hook_form_alter() being the best example), an array of
  // those params can be placed in the __drupal_alter_by_ref key of the $data
  // array. This is somewhat ugly, but is an unavoidable consequence of a flexible
  // drupal_alter() function, and the limitations of func_get_args().
  // @todo: Remove this in Drupal 7.
  if (is_array($data) && isset($data['__drupal_alter_by_ref'])) {
    $by_ref_parameters = $data['__drupal_alter_by_ref'];
    unset($data['__drupal_alter_by_ref']);
  }

  // Hang onto a reference to the data array so that it isn't blown away later.
  // Also, merge in any parameters that need to be passed by reference.
  $args = array(&$data);
  if (isset($by_ref_parameters)) {
    $args = array_merge($args, $by_ref_parameters);
  }

  // Now, use func_get_args() to pull in any additional parameters passed into
  // the drupal_alter() call.
  $additional_args = func_get_args();
  array_shift($additional_args);
  array_shift($additional_args);
  $args = array_merge($args, $additional_args);

  foreach (module_implements($type .'_alter') as $module) {
    $function = $module .'_'. $type .'_alter';
    call_user_func_array($function, $args);
  }
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему