将JS添加到特定页面

时间:2015-08-28 17:02:04

标签: drupal-7 drupal-theming

我在Drupal中创建了一个登录页面,现在我想添加一些特定于该页面的Javascript文件。我查看了我的template.php文件以查看其他人使用的一些预处理函数,但我很困惑如何专门定位我的页面以使用drupal_add_js()

函数THEME_preprocess_html(&$variables, $hook)在我的文件中使用了很多。如何确定$variables中包含的内容?我可以用它来定位我的页面吗?

3 个答案:

答案 0 :(得分:0)

如果您的目标网页是首页,则在$variables中,您有一个名为is_front的密钥。您可以使用它来查看您当前是否在主页上并在值为true时添加JS。

function bartik_preprocess_html(&$variables) {
  if ($variables['is_front']) {
    drupal_add_js(...);
  }
}

如果不是您的首页,您可以在theme_debug中将TRUE设置为settings.php,以标识您可以使用的自定义模板文件的名称。只需复制page.tpl.php并在页眉或页脚中添加自定义js。我使用theme_debug(html commments)时的首页示例:

<!-- THEME DEBUG -->
<!-- CALL: theme('page') -->
<!-- FILE NAME SUGGESTIONS:
   * page--front.tpl.php
   * page--node--1.tpl.php
   * page--node--%.tpl.php
   * page--node.tpl.php
   x page.tpl.php
-->
<!-- BEGIN OUTPUT from 'themes/bartik/templates/page.tpl.php' -->

我可以将page.tpl.php克隆到page--node--1.tpl.php,以便仅为该页面包含我的特定JS。

答案 1 :(得分:0)

如果你想避免完全搞乱模板文件,一个简洁的选择是将你的JS代码放在一个始终可用的中央JS文件中(例如在自定义模块中)。然后用测试包装有问题的JS函数,看看你是否在该页面上。我最喜欢的jQuery方法是:

if ($('.node-1234').length > 0) {
  // functions here
}

您可以将'.node-1234'替换为您知道该页面上存在的任何样式或ID,但不能替换其他样式或ID。使用具有NID的样式并不总是最好的想法,因为如果移植实现,ID号可能会更改,因此请检查代码。可能有一个视图或该页面独有的其他元素,您可以测试。如果您的网页是首页,则应该.page-front作为可能,例如。

答案 2 :(得分:0)

根据您的具体情况,可以选择:

  • 启用node embed
  • 创建一个新的文本格式(admin/config/content/formats/add),该格式没有任何过滤器,仅供管理员角色使用
  • 使用“未过滤”格式创建包含JavaScript的新节点,然后将此节点嵌入到需要JavaScript的任何位置

当我需要在某些页面上添加一个简短的JavaScript代码段时,这对我很有用。