我正在尝试为首页制作不同的布局。在那个过程中,我声明了名为“front-page.css”和 page--front.tpl.php 的新样式表。我正在使用加载 responsive-sidebar.css 的 Zen 子主题。我想删除“responsive-sidebar.css”并加载“front-page.css”。我这样做的原因是后来样式表中的研磨列数与前者不同。
我不想使用 Panels 模块。我正在使用 Drupal 7。
我正在尝试为首页制作不同的布局。在那个过程中,我声明了名为“front-page.css”和 page--front.tpl.php 的新样式表。我正在使用加载 responsive-sidebar.css 的 Zen 子主题。我想删除“responsive-sidebar.css”并加载“front-page.css”。我这样做的原因是后来样式表中的研磨列数与前者不同。
我不想使用 Panels 模块。我正在使用 Drupal 7。
在您的主题template.php
文件和template_preprocess_page($vars)中,找到要在其中删除的 CSS 文件,$vars['stylesheets']
然后使用 PHP 的unset
函数将其从$vars['stylesheets']
数组中删除。
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']);
}
该钩子可以在模块或主题中实现。
我刚刚找到了更好的方法来做到这一点。它有点 hacky,但允许在几乎任何地方取消设置 css:
$css = &drupal_static('drupal_add_css', array());
unset($css['some_css_path']);
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 中。您需要删除所有缓存(或模块缓存)。