我在Drupal中创建了一个登录页面,现在我想添加一些特定于该页面的Javascript文件。我查看了我的template.php文件以查看其他人使用的一些预处理函数,但我很困惑如何专门定位我的页面以使用drupal_add_js()
。
函数THEME_preprocess_html(&$variables, $hook)
在我的文件中使用了很多。如何确定$variables
中包含的内容?我可以用它来定位我的页面吗?
答案 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)
根据您的具体情况,可以选择:
admin/config/content/formats/add
),该格式没有任何过滤器,仅供管理员角色使用当我需要在某些页面上添加一个简短的JavaScript代码段时,这对我很有用。