Mam*_*dou 2 preprocessor drupal
我使用drupal_add_css()和drupal_add_js()对CSS和JavaScript文件添加到我的Drupal网站.我在一个名为control的模块中执行此操作,因此调用我正在使用的函数control_preprocess_page(&$vars).
但在我的主题中没有添加任何内容!
这些函数在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,如果适用),将避免重新生成这些变量.