Как избавиться от таблиц стилей Drupal CSS? - PullRequest
9 голосов
/ 26 февраля 2010

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 27 февраля 2010
<?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);
}

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

1 голос
/ 26 сентября 2011

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

См. Файл .info для темы Дао для примера

0 голосов
/ 30 апреля 2010

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

 <?php echo $styles ?>

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


Nitz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...