drupal_add_css,drupal_add_js不起作用

时间:2010-12-13 16:42:10

标签: drupal preprocessor

我正在使用drupal_add_css()drupal_add_js()将CSS和JavaScript文件添加到我的Drupal网站。我在一个名为control的模块中执行此操作,因此我正在使用的函数称为control_preprocess_page(&$vars)

但在我的主题中没有添加任何内容!

3 个答案:

答案 0 :(得分:5)

这些函数在preprocess_page()函数中不起作用的原因是template_preprocess_page()(首先调用)已经将结构化内容格式化为变量$ scripts和$ styles。如果要在预处理级别添加其他js或css,则需要重新生成这两个变量,如下所示:

function control_preprocess_page(&$vars) {
  // Add new CSS.
  drupal_add_css('path/to/css/foo.css');
  // Rebuild the 'styles variable.
  $vars['styles'] = drupal_get_css();

  // Add new JS.
  drupal_add_js(...);
  $vars['scripts'] = drupal_get_js();
}

在hook_init中使用drupal_add_js / drupal_add_css,或者使用更精确的目标函数(例如,alter hook或nodeapi hook,如果适用),将避免重新生成这些变量。

答案 1 :(得分:4)

在需要CSS / JS时,可以使用drupal_add_css / js调用它。如果在每个页面上都使用了模块,也可以在hook_init()中使用它。

答案 2 :(得分:0)

可能会有所帮助的一些指示:

1)将CSS / JS脚本放在主题文件夹中。 2)在node.tpl.php文件中使用以下命令:

<?php drupal_add_js(drupal_get_path('theme', 'INSERT_NAME_OF_THEME') . '/INSERT_NAME_OF_CSS_FILE.css'); ?>

3)如果将CSS放在子文件夹中,则需要以下代码:

4)在yousite.com/admin/settings/performance

刷新缓存

5)有时我发现我必须在admin / build / themes中禁用主题并重新启用它。