我正在努力完成以下工作。我需要使用 Drupal 6 作为项目要求,但我想将它与我自己的 HTML 和 CSS 样式表一起用于每个节点/ View /面板等。
问题是,无论主题是什么,我总是发现 Drupal 适用于我的 HTML 内容,包括我的 CSS 样式表和与所选主题相关的 CSS。我也尝试过使用样式剥离器模块(安装在站点/所有/模块中),但没有成功。无论我做什么,额外的 CSS 样式表都会应用到我的页面上,完全破坏了我的布局。
实现这一目标的正确方法是什么?为什么样式剥离器根本不起作用?是否有完全空白的主题可用?我尝试过 basic、mothership、zen 等,但我总是看到附加的 CSS 样式表应用于我的页面。
这让我发疯,Drupal 因其灵 active 而被其他人选中。
先感谢您。
最佳答案
<?php
/**
* Helper function to allow easy CSS excludes + includes
*/
function _phptemplate_get_css($exclude = array(), $include = array()){
$css = drupal_add_css();
foreach ($css['all']['module'] as $k => $path) {
$file = substr($k, strrpos($k, '/') + 1);
if (in_array($file, $exclude)){
unset($css['all']['module'][$k]);
}
}
foreach ($include as $file){
$css['all']['theme'][path_to_theme() .'/'. $file] = true;
}
return drupal_get_css($css);
?>
阅读更多 drupal.org .
更新:
放置此函数的正确位置是
template.php
您的主题文件。实际上,在您的情况下,您需要传递要排除的 css 文件名数组。调用
drupal_add_css()
不传递任何参数,将提供 $css
带有一系列将附加到您的主题的 CSS 文件。所以现在是入场的好时机!如您所见,在第一个
foreach
循环我们只需寻找 $css
传递的 $exclude
中存在的文件名的数组数组,用于样式删除。我们在第二个循环中为样式插入做同样的工作。最后,我们使用 drupal_get_css()
返回应附加到主题的所有样式的主题表示。功能。 (在你的情况下可能没有)那么,在哪里调用这个函数呢?您可以在
_phptemplate_variables()
中调用此辅助函数对于 D5 或 YOUR_THEME_preprocess()
对于 D6。正如我们在 D6 中看到的那样(未经测试):function YOUR_THEME_preprocess(&$vars, $hook){
// Stylesheet filenames to be excluded.
$css_exclude_list = array(
'lightbox.css',
'lightbox_lite.css',
);
// Making use of previously defined helper function.
$vars['styles'] = _phptemplate_get_css($css_exclude_list);
}
我相信你知道如何排除他们所有;)
关于drupal - 如何摆脱 Drupal CSS 样式表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340426/