Как избавиться от таблиц стилей Drupal CSS?
-
22-09-2019 - |
Вопрос
Я пытаюсь выполнить следующее.Мне нужно использовать 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 вашей темы, используя имена файлов, соответствующие основным файлам, то вы переопределяете их, и если ваши переопределения не существуют, то они не включаются.
Я не думаю, что это сработает, но я думаю, просто удалите следующую строку в вашей теме page.tpl.php
<?php echo $styles ?>
и тогда у drupal не будет ни одного из своих собственных стилей..
это может оказаться работой для вас.
Nitz