我正在制作一个drupal模块。我在模块中的要求是,当模块被激活时,它需要在body标签之后的page.tpl文件中添加一个javascript。任何人都可以帮我如何做到这一点。我已经尝试过使用drupal_add_js,但是它不会将脚本完全放在body标签之后,而是放在页脚的内部或下方。我也尝试使用模板变量和预处理方法,但问题是预处理方法用新的变量替换该变量的旧值。有没有办法如何实现这一点。
答案 0 :(得分:1)
我认为最好的方法是将它放在这样的页脚中,这取决于它将在页面末尾呈现的主题,这也意味着要很晚才进行评估,这就是为什么你想要的把JS放在底部:
$path_to_script = $drupal_get_path('module', 'my_module') . '/my_module.js');
drupal_add_js($path_to_script, $type = 'module', $scope = 'footer');
答案 1 :(得分:0)
您可以在模块中实现yourModule_preprocess_page(&$vars)
函数,将自定义JavaScript包含标记添加为$ vars数组的新条目,例如:作为$vars['yourModule_js']
:
function yourModule_preprocess_page(&$vars) {
$vars['yourModule_js'] = yourModule_create_js_markup(); // TODO: adjust to your needed output
}
有了这个,你修改你的page.tpl.php文件来检查这个变量的存在,如果它在那里,把它输出到你喜欢的地方:
<?php if ($yourModule_js): ?>
<?php print $yourModule_js; ?>
<?php endif; ?>
注意:这不是推荐的方式,因为它会将您的JavaScript从Drupal缓存/聚合机制中排除,并且可能很容易导致与您网站上的其他JavaScript出现问题/冲突。您应该考虑调整JavaScript以符合Drupal的方式工作,有关详细信息,请参阅Overview of JavaScript, AJAX, AHAH API以及从JavaScript in Drupal链接的网页。
答案 2 :(得分:0)
Drupal没有API允许在任何地方添加JS。
最简单的解决方案是在主题中的page.tpl.php中手动添加 - 硬编码。 如果你不喜欢这样,你可以继续这条路线: