我正在使用drupal_add_css()
和drupal_add_js()
将CSS和JavaScript文件添加到我的Drupal网站。我在一个名为control的模块中执行此操作,因此我正在使用的函数称为control_preprocess_page(&$vars)
。
但在我的主题中没有添加任何内容!
答案 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中禁用主题并重新启用它。