Какой хук использовать для вставки переменной JavaScript из данных узла - PullRequest
0 голосов
/ 27 мая 2011

У меня есть следующая функция, работающая в качестве доказательства концепции для вставки переменной js из поля узла.

Она находится в hook_preprocess_html(), потому что js уже визуализируется в последующих хуках.Обычно я получаю переменную из $vars['node'], но я не думаю, что она существует в hook_preprocess_html()?

function mymodule_preprocess_html(&$vars) {
  $reference = $vars['page']['content']['system_main']['nodes'][47]['field_reference']['#items'][0]['value'];
  drupal_add_js(array(
    'field_reference' => $reference
  ), 'setting');
}

Есть ли лучший способ получить доступ к переменной поля узла, возможно, в более позднем хуке?

1 Ответ

3 голосов
/ 27 мая 2011

Если объект узла недоступен в переменных, переданных в функцию предварительной обработки, вы можете получить объект узла из menu_get_object () , который по умолчанию возвращает объект для узла, идентификатор которого переданв качестве второго элемента URL (например, «узел / 1»).Если путь не начинается с «узла», что означает, что отображаемая страница не является страницей узла, тогда функция вернет NULL.

if ($node = menu_get_object()) {
  // The URL for the page being shown is node/<nid>.
}

Если вы хотите использовать функцию предварительной обработкидля которого объект узла передается в массиве $variables, тогда вы можете использовать hook_preprocess_page(), для которого $variables['node'] также может быть пустым, или hook_preprocess_node(), для которого объект узла всегда передается в $variables['node'].

...