Drupal 7 将JS添加到特定页面

Drupal 7 将JS添加到特定页面,drupal-7,drupal-theming,Drupal 7,Drupal Theming,我已经在Drupal中创建了一个登录页面,现在我想添加一些特定于该页面的Javascript文件。我在template.php文件中查看了其他人使用过的一些预处理函数,但我不知道如何专门针对我的页面使用drupal\u add\u js() 函数THEME\u preprocess\u html(&$variables,$hook)在我的文件中被大量使用。如何计算$variables中包含的内容?我可以用它来定位我的页面吗 如果您的登录页是您的首页,则在$variables中,您有一个名为is_

我已经在Drupal中创建了一个登录页面,现在我想添加一些特定于该页面的Javascript文件。我在template.php文件中查看了其他人使用过的一些预处理函数,但我不知道如何专门针对我的页面使用
drupal\u add\u js()


函数
THEME\u preprocess\u html(&$variables,$hook)
在我的文件中被大量使用。如何计算
$variables
中包含的内容?我可以用它来定位我的页面吗

如果您的登录页是您的首页,则在
$variables
中,您有一个名为
is_front
的键。您可以使用它查看当前是否在主页上,如果值为
true
,则添加JS

function bartik_preprocess_html(&$variables) {
  if ($variables['is_front']) {
    drupal_add_js(...);
  }
}
如果不是头版,可以在
settings.php
中将
theme\u debug
设置设置为
TRUE
,以标识可使用的自定义模板文件的名称。只需复制
page.tpl.php
并在页眉或页脚中添加自定义js即可。使用theme_debug(html命令)时的首页示例:



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

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

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

您可以将
'.node-1234'
替换为您知道该页面上存在的任何样式或ID,但不包括其他样式或ID。使用带有NID的样式并不总是最好的主意,因为如果移植实现,ID号可能会发生变化,所以请检查代码。该页面可能有一个视图或某些其他元素是您可以测试的。如果您的页面是头版,您可以选择
.page front
,例如。

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

  • 使能
  • 创建一个新的文本格式(
    admin/config/content/formats/add
    ),该格式没有任何筛选器,仅对管理员角色可用
  • 使用“未过滤”格式创建包含JavaScript的新节点,然后将此节点嵌入到需要JavaScript的任何位置
当我需要向某些页面添加一个简短的JavaScript代码片段时,这对我来说非常有效

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