drupal_add_css, drupal_add_js does not work

2020-03-26 08:34发布

I am using drupal_add_css() and drupal_add_js() to add CSS and JavaScript files to my Drupal site. I am doing this in a module called control so the function I'm using is called control_preprocess_page(&$vars).

But in my theme nothing is added!

3条回答
神经病院院长
2楼-- · 2020-03-26 08:47

At the point your CSS/JS is needed, you can call it with drupal_add_css/js. You can also use it in the hook_init(), if your module is used on every page.

查看更多
仙女界的扛把子
3楼-- · 2020-03-26 08:52

Some pointers that might help:

1) Place your CSS/JS script in your theme folder. 2) In your node.tpl.php file use the following:

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

3) If you place your CSS in a sub folder, you will need the following code:

4) Refresh the cache at yousite.com/admin/settings/performance

5) Sometimes I find that I have to disable the theme at admin/build/themes and the re-enable it.

查看更多
霸刀☆藐视天下
4楼-- · 2020-03-26 09:00

The reason these functions aren't working within the preprocess_page() function is that template_preprocess_page() (which is called first) has already formatted the structured content into variables $scripts and $styles. If you want to add additional js or css at the preprocess level, you need to regenerate those 2 variables, something like this:

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();
}

Using drupal_add_js/drupal_add_css in hook_init, or a more precisely targeted function (eg, an alter hook, or nodeapi hook, if applicable), will avoid having to regenerate those variables.

查看更多
登录 后发表回答