4

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

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

4

4 回答 4

2

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

于 2013-01-02T11:33:52.583 回答
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']);
}

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

于 2013-01-02T13:18:56.547 回答
0

我刚刚找到了更好的方法来做到这一点。它有点 hacky,但允许在几乎任何地方取消设置 css:

$css = &drupal_static('drupal_add_css', array());
unset($css['some_css_path']);
于 2014-12-15T12:09:29.683 回答
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 中。您需要删除所有缓存(或模块缓存)。

于 2020-02-22T20:47:52.227 回答