如何在drupal中添加最后加载的css?

时间:2010-05-28 10:55:36

标签: php drupal

drupal_add_css('override/files/style.css');

这种语句无法确保最后加载css,

我该怎么办?

6 个答案:

答案 0 :(得分:4)

使用组属性:

drupal_add_css(drupal_get_path('theme', 'mytheme') . '/css/styles.css', array('group' => CSS_THEME);

答案 1 :(得分:1)

按照drupal_add_css()的顺序添加CSS,这在很大程度上取决于执行调用的模块或主题的权重,存储在系统表中。 Drupal.org's instructions on changing module weight也适用于主题。

确定drupal_add_css()顺序的另一个因素就是在Drupal代码中调用包含函数的顺序。例如,template_preprocess_page()总是在template_preprocess_node()之后调用,只是因为节点进入页面。

答案 2 :(得分:1)

对于Drupal 6使用:

drupal_add_css('site.css', 'theme', '', array('weight' => 999))

答案 3 :(得分:0)

如果您查看ninesixty主题的template.php主题文件,您将找到解决方案。

从theme_preprocess_page钩子调用以下函数:

function ninesixty_css_reorder($css) {
  global $theme_info, $base_theme_info;

  // Dig into the framework .info data.
  $framework = !empty($base_theme_info) ? $base_theme_info[0]->info : $theme_info->info;

  // Pull framework styles from the themes .info file and place them above all stylesheets.
  if (isset($framework['stylesheets'])) {
    foreach ($framework['stylesheets'] as $media => $styles_from_960) {
      // Setup framework group.
      if (isset($css[$media])) {
        $css[$media] = array_merge(array('framework' => array()), $css[$media]);
      }
      else {
        $css[$media]['framework'] = array();
      }
      foreach ($styles_from_960 as $style_from_960) {
        // Force framework styles to come first.
        if (strpos($style_from_960, 'framework') !== FALSE) {
          $framework_shift = $style_from_960;
          $remove_styles = array($style_from_960);
          // Handle styles that may be overridden from sub-themes.
          foreach ($css[$media]['theme'] as $style_from_var => $preprocess) {
            if ($style_from_960 != $style_from_var && basename($style_from_960) == basename($style_from_var)) {
              $framework_shift = $style_from_var;
              $remove_styles[] = $style_from_var;
              break;
            }
          }
          $css[$media]['framework'][$framework_shift] = TRUE;
          foreach ($remove_styles as $remove_style) {
            unset($css[$media]['theme'][$remove_style]);
          }
        }
      }
    }
  }

  return $css;
}

答案 4 :(得分:0)

使用权重属性:

drupal_add_css(drupal_get_path('theme', 'mytheme') . '/css/styles.css', array('weight' => 999));

注意:主题信息中添加的CSS将始终为最后一个,因此请使用与之前相同的功能来更改主题信息文件中声明的样式表的权重。

答案 5 :(得分:0)

这对我有用。在页面上的最后一个css之后添加css

$module_path = drupal_get_path('module', 'my_module');
  drupal_add_css($module_path . '/css/my_module.css', array('weight' => 99999, 'group'=>CSS_THEME));