问题描述
|
我有以下功能用作从节点字段插入js变量的概念证明。
它在ѭ0中,因为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\');
}
也许在以后的挂钩中有更好的方法来访问节点字段变量?
解决方法
当传递给预处理函数的变量中没有节点对象时,则可以从menu_get_object()获取节点对象,该菜单对象默认返回该节点的对象,该节点的ID作为URL的第二个元素传递(例如\ “ node / 1 \”)。如果路径不是以“ node”开头,则表示所显示的页面不是节点页面,则该函数将返回“ 4”。
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\']
传递)。