使用哪个钩子从节点数据中插入JavaScript变量

问题描述

| 我有以下功能用作从节点字段插入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\']
传递)。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...