在Drupal中有选择地删除样式表以获取页面

时间:2013-01-02 11:27:13

标签: php drupal drupal-7 drupal-theming drupal-zen

我正在尝试为首页制作不同的布局。在那个过程中,我声明了名为“front-page.css”的新样式表和page - front.tpl.php。我正在使用一个Zen subtheme来加载responsive-sidebar.css。我想删除“responsive-sidebar.css”并加载“front-page.css”。 我这样做的原因是因为后面的样式表中的研磨列数与前者不同。

我不想使用Panels模块。我正在使用Drupal 7。

4 个答案:

答案 0 :(得分:2)

在主题的template.php文件内和template_preprocess_page($vars)内,找到要在$vars['stylesheets']内删除的CSS文件,并使用PHP的unset函数将其从$vars['stylesheets']中移除{1}}数组。

答案 1 :(得分:2)

Drupal 7方式是使用hook_css_alter()

function MYMODULE_css_alter(&$css) {
  // Remove defaults.css file. The path will probably change for your theme obviously.
  unset($css[drupal_get_path('theme', 'MYTHEME') . '/css/responsive-sidebar.css']);
}

该钩子可以在模块或主题中实现。

答案 2 :(得分:0)

我发现了更好的方法。它有点hacky,但允许在几乎任何地方取消设置css:

$css = &drupal_static('drupal_add_css', array());
unset($css['some_css_path']);

答案 3 :(得分:0)

Drupal 8路。也许它可以在Drupal 7中使用。要删除特定/特定页面上的样式表,您需要:

function MYTHEME_css_alter(&$css) {

// Get me path:
  $current_path = \Drupal::service('path.current')->getPath();
  $result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);

    if ($result == 'your/path' ){
      unset($css[drupal_get_path('theme', 'THEMENAME') . '/css/style.css']);
    }
}

它在D8中对我有用,可以放在.theme或.module中。您需要删除所有缓存(或模块缓存)。