5

我正在尝试通过使用在标头中插入对 Javascript 文件的引用drupal_add_js()。我将这一行放在 template.php 中的模板预处理函数中。代码根本不起作用的结果:输出中没有应有的脚本链接。谁能告诉我我做错了什么?

function phptemplate_preprocess_page(&$vars) {
    $url = drupal_get_path("theme","mysite");  
    drupal_add_js($url."/jquery.js");  
    drupal_add_js($url."/drupal.js");  

.....
4

5 回答 5

10

更简单的是,需要在所有页面上加载的 Javascript 可以添加到主题的 .info 文件中。请参阅http://drupal.org/node/171205#scripts

于 2010-04-02T14:59:07.510 回答
2
  drupal_add_js(path_to_theme().'/js/jquery.cycle.all.js');
  $vars['scripts'] = drupal_get_js();
于 2010-04-01T21:23:04.227 回答
1

正如其他人所指出的,简单地drupal_add_js()hook_preprocess_page()实现中使用是行不通的。通过多次调用收集的对 JavaScript 文件的引用drupal_add_js()用于将相应的标记生成到$scripts来自template_preprocess_page(). 但是主题的实现hook_preprocess_page()总是在 之后调用template_preprocess_page()。因此,为了在文件中添加文件,drupal_add_js().tpl.php需要覆盖已设置的$scripts变量:

function THEME_preprocess_page(&$variables)
  drupal_add_js(...);
  $variables['scripts'] = drupal_get_js();
}

但是,您不必自己添加jquery.jsdrupal.js它应该已经由 Drupal 核心自动完成。如果您需要自己做,那么您的网站上出现了问题。您可以(重新)添加文件作为快速修复,但您最好找到问题的根本原因,因为它很可能会产生您尚未发现的其他问题(或在没有意识到的情况下解决)。

于 2011-10-31T11:40:57.383 回答
1

如果将 javascript 文件放在主题目录中,则只需将以下内容添加到主题 .info 文件中

scripts[] = myJavaScriptFile.js

添加此文件后,您需要停用主题,然后对其进行反应。

于 2010-04-03T00:41:16.697 回答
-1

drupal_add_js()有效,但您将其深入到页面呈现过程中。我建议你像你一样把它放在 template.php 中,但一开始,放在任何函数之外。这就是我们在一些项目中所做的。

于 2010-04-02T12:35:23.733 回答