如何仅将JavaScript块添加到主页?


8

我有一段JavaScript,我需要添加到我的主页(并且只有我的主页)中,以通过我注册的热图服务启用点击记录。

他们指定了需要放在</body>标签之前的代码,但我想可以将其放在<body>标签内的任何位置都是安全的。

我希望该代码段不出现在其他任何页面上。我该怎么做?

我正在运行Drupal 6。

Answers:


15

如果按首页表示首页,则可以hook_preprocess_page()在自定义模块中实现。

function mymodule_preprocess_page(&$variables) {
  if ($variables['is_front']) {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/mymodule.js');
    $variables['scripts'] = drupal_get_js();
  }
}

使用以下代码,$variables['is_front']_template_preprocess_default_variables()中设置(从template_preprocess()调用)中,相同的代码在Drupal 7上适用。

  // drupal_is_front_page() might throw an exception.
  try {
    $variables['is_front'] = drupal_is_front_page();
  }
  catch (Exception $e) {
    // If the database is not yet available, set default values for these
    // variables.
    $variables['is_front'] = FALSE;
    $variables['db_is_active'] = FALSE;
  }

drupal_add_js()首先调用,然后再调用的原因drupal_get_js()是,在之后执行的另一个模块运行以下代码的情况下,仍将添加JavaScript文件。

function quite_a_different_module_preprocess_page(&$vars) {
  drupal_add_js(drupal_get_path('module', 'quite_a_different_mymodule') . '/quite_a_different_module.js');
  $vars['scripts'] = drupal_get_js();
}

使用drupal_add_js(),该文件将被添加到drupal_get_js()返回的输出中。


这看起来不错,请尝试一下。
PHLAK 2011年

这对于将JS包含在标头中非常有效,但是有没有办法将其放入正文中?
PHLAK 2011年

1
@PHLAK要将其放在正文中,只需<script>在HTML正文中添加一个标记。
kiamlaluno

通过在页面末尾添加内容块并将其限制为仅显示在<front>页面上,我可以实现所需的功能。这个解决方案也很好,但不适用于我所处的情况。谢谢。
PHLAK 2011年

6

如果代码可以放在头部,则在template.php中添加以下功能。

function MYTHEME_preprocess_page (&$vars) {
  if ($vars['is_front']) {
    $vars['scripts'] .= "// my JS for the home page";
  }
}

您也可以在page.tpl.php的适当位置添加以下代码。

<?php if ($is_front): ?>
  // JS goes here
<?php endif; ?>

还有其他方法可以完成此操作,但这可能是最简单的。


-3

在Drupal 7中,如果您想将js包含在标记中,

最后一个解决方案是,在从系统文件夹中将其复制到主题内之后,您必须修改的文件是html.tpl.php

并不是严格的Drupal方式,但是有效

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.