在body标签后立即添加javascript

时间:2010-05-31 11:20:54

标签: drupal

我正在制作一个drupal模块。我在模块中的要求是,当模块被激活时,它需要在body标签之后的page.tpl文件中添加一个javascript。任何人都可以帮我如何做到这一点。我已经尝试过使用drupal_add_js,但是它不会将脚本完全放在body标签之后,而是放在页脚的内部或下方。我也尝试使用模板变量和预处理方法,但问题是预处理方法用新的变量替换该变量的旧值。有没有办法如何实现这一点。

3 个答案:

答案 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中手动添加 - 硬编码。 如果你不喜欢这样,你可以继续这条路线:

  • 在page.tpl.php中添加一个您想要打印Js的地方
  • 使用变量预处理,初始化'page'的变量 $ vars ['inline_js']
  • 填充该变量的最简单方法是为其分配硬编码值(丑陋)
  • 更难,但仍然很简单,就是为它赋一个变量:variable_get('inline_js','... my_inline_js')。然后,您可以在settings.php中设置此变量,或者编写一个非常简单的模块来设置它。