Как избавиться от таблиц стилей Drupal CSS?

Я пытаюсь добиться следующего. Мне нужно использовать Drupal 6 в качестве требования проекта, но я хочу использовать его со своими собственными таблицами стилей HTML и CSS для каждого узла / представления / панели и т. Д.

Проблема в том, что независимо от темы, я всегда обнаруживал, что Drupal применяет к моему HTML-контенту как мои таблицы стилей CSS, так и CSS, относящиеся к выбранной теме. Я также безуспешно пробовал использовать модуль stylestripper (установленный в sites / all / modules). Что бы я ни делал, к моим страницам применяются дополнительные таблицы стилей CSS, полностью разрушая мой макет.

Как правильно этого добиться? Почему стилстриппер вообще не работает? Есть ли в наличии полностью пустая тема? Я пробовал basic, mothership, zen и т. Д., Но я всегда вижу дополнительные таблицы стилей CSS, примененные к моим страницам.

Это сводит меня с ума, Drupal был выбран кем-то другим за его гибкость. Заранее спасибо.


person Massimo Cafaro    schedule 26.02.2010    source источник


Ответы (3)


<?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.

Обновление:
Надлежащее место для размещения этой функции - _2 _ файл вашей темы. На самом деле в вашем случае вам нужно передать массив имен файлов css, которые вы хотите исключить.
Вызов _ 3_ без переданных аргументов предоставит $css массив файлов CSS, которые будут прикреплены к вашей теме. Так что сейчас самое время войти!

Как видите, в первом foreach цикле мы просто ищем в массиве $css имена файлов, которые существуют в переданном массиве $exclude, для удаления стиля. И мы проделываем ту же работу во втором цикле для вставки стиля. И в конце мы возвращаем тематическое представление всех стилей, которые должны быть прикреплены к теме, используя _ 8_. (может быть, в вашем случае ничего)

Ну где вызвать эту функцию? Эту вспомогательную функцию можно вызвать в _phptemplate_variables() для D5 или _ 10_ для 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);
}

Я уверен, что ты знаешь, как их всех исключить;)

person sepehr    schedule 27.02.2010
comment
Спасибо, кажется, все идеально. Не могли бы вы добавить недостающие детали, необходимые для фактического использования функции? В какой файл мне поместить функцию? Как вызвать это, чтобы исключить все таблицы стилей CSS? - person Massimo Cafaro; 27.02.2010
comment
Отлично! Это было именно то, что я искал! Спасибо за то, что поделился этим! - person Massimo Cafaro; 27.02.2010

Если вы определяете файлы CSS и / или JavaScript в файле .info вашей темы, используя имена файлов, которые соответствуют файлам ядра, вы переопределяете их, а если ваши переопределения не существуют, они не включаются.

См. пример в файле .info для темы Tao

person Simon    schedule 26.09.2011

Я не могу, это сработает, но я думаю, просто удалите следующую строку на странице page.tpl.php вашей темы

 <?php echo $styles ?>

и тогда у drupal не будет никаких собственных стилей ..
это может сработать для вас.


Ниц

person Nitz    schedule 29.04.2010