Вопрос

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

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

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

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

Это было полезно?

Решение

<?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);
}

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

Другие советы

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

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

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

 <?php echo $styles ?>

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


Nitz

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top