<?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);
}
Я уверен, что вы знаете, как исключить их всех;)