如何解决使用哪个钩子从节点数据中插入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\']
传递)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。