drupal_add_css,drupal_add_js不起作用

Mam*_*dou 2 preprocessor drupal

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

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

jhe*_*rom 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();
}
Run Code Online (Sandbox Code Playgroud)

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