Вопрос

Мне нужно использовать drupal_add_css для вызова таблиц стилей на отдельных страницах Drupal 6.Я не хочу редактировать таблицу стилей основной темы, поскольку там будет набор отдельных страниц, которым всем нужны совершенно новые стили - основной лист был бы огромным, если бы я поместил все это туда.

Мое решение состояло в том, чтобы отредактировать страницу в режиме редактора PHP и сделать это:

<?php 
drupal_add_css("/styles/file1.css", "theme");
?>

<div id="newPageContent">stuff here in html</div>

Но когда я просматриваю исходный код, там ничего нет!Даже не битая CSS-ссылка или что-то в этом роде, она просто отказывается добавлять CSS-лист в CSS-пакет, помещенный в заголовок страницы.

Вариации, похоже, тоже не работают:

drupal_add_css($path = '/styles/file1.css', $type = 'module', $media = 'all', $preprocess = TRUE)

Заголовок моего шаблона выглядит следующим образом, я ничего не изменил по умолчанию, кроме добавления пользовательского JavaScript.

<head>
    <?php print $head ?>
    <title><?php print $head_title ?></title>
    <?php print $styles ?>
    <?php print $scripts ?>
    <script type="text/javascript" src="<?php print base_path() ?>misc/askme.js"></script>    
    <!--[if lt IE 7]>
      <?php print phptemplate_get_ie_styles(); ?>
    <![endif]-->
</head>

Почему эта функция не работает?

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

Решение 5

Ответом было очень много, чтобы использовать модуль CSS Injector - отличное небольшое дополнение!

Вот выдержка из его страницы проекта:

  

Позволяет администраторам внедрять CSS в вывод страницы на основе настраиваемых правил. Это полезно для добавления простых настроек CSS без изменения официальной темы сайта. CSS добавляется с использованием стандартной функции drupal_add_css () в Drupal и учитывает кэширование страниц и т. Д. Браш 2.x использует CTools, поэтому CSS может быть включен с изменениями Feature (т. Е. CSS, который улучшает внешний вид View, может быть упакован с View ).

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

Не совсем понятно, где вы выбираете шаблон, который есть в вашем примере. Если вы выбираете его из модуля, вы можете просто использовать drupal_add_css в модуле, а не в шаблоне.

Если у вас есть собственная тема, вы можете использовать template_preprocess_page и вставить логику в туда, чтобы добавить соответствующий CSS (вы также можете использовать его, чтобы выбрать шаблон для использования).

Я заметил что-то странное, и это может решить вашу проблему:

drupal_add_css( drupal_get_path('theme','themname') . '/working.css','module' ,'all' , false );

drupal_add_css( drupal_get_path('theme','themname') . '/path/to/folder/notworking.css','module' ,'all' , false );

Первый из них будет работать, потому что его стиль находится в главной папке Вторая строка не будет работать, потому что стиль находится в подпапке!

Изменить.

Я думаю, что это не сработало, потому что я не написал путь к файлу стиля должным образом: S, поэтому, пожалуйста, не обращайте внимания на мой ответ

drupal_add_css( drupal_get_path('theme','test') . '/pages/subpage/style.css','theme');

работает

Эта функция не работает в шаблонах. Причина в том, что переменная $ styles, которая будет содержать все html таблицы стилей, уже будет сгенерирована на этом этапе, поэтому drupal_add_css не будет работать, так как добавляет к этому. если вы хотите сделать это в своей теме, вам, вероятно, придется добавить файл css вручную

<link rel="stylesheet" ... />

Другой способ - использовать drupal_add_css в модуле, но вам может быть трудно добавить правильные css-файлы на нужные вам страницы.

Возможно использовать drupal_add_css () в вашем файле template.php; на этой странице есть хороший пример того, как это сделать.

Этот код внутри template.php работает для меня:

function alagna_preprocess_page(&$vars) {
        drupal_add_css(path_to_theme() . '/header_1.css', 'theme');
        $vars['css'] = drupal_add_css();
        $vars['styles'] = drupal_get_css();
} 

объясненный:

  1. аланья - это название темы
  2. header_1.css - это необходимый файл css.

drupal_add_css ожидает путь относительно базового пути, тогда как drupal_get_path не возвращает путь относительно базового пути.

<код> глобальный $ base_path;
drupal_add_css ($ base_path. drupal_get_path ('module / theme', 'name'). " /styles/file1.css" ;, " module / theme ");

Вы можете выбрать между модулем и темой соответственно.

Спасибо за ссылку, wyrmmage. Это очень полезно. Я думаю, что остальная часть кода на странице не нужна. Возможно, они вам просто нужны, так как drupal 6 уже автоматически проверяет существование файла:

drupal_add_css(path_to_theme() . '/css/yourcss.css', 'theme');
// Add the following to regenerate $styles. 
// This is needed for template_preprocess_page() since css is already generated at this point.
$variables['styles'] = drupal_get_css(); 

Попробуй это common.inc drupal_get_css($css = NULL)

Параметры

$css:(необязательно) Массив файлов CSS. Если массив не указан, вместо него используется массив таблиц стилей по умолчанию.

    $css    =   $vars['css'];
// unset the system css files
$unset_css = array
    'modules/system/system.css',
    'modules/system/system-menus.css',
);

foreach($unset_css as $css_f) {
    if(isset($css['all']['module'][$css_f])) {
        unset($css['all']['module'][$css_f]);
    }
}

// add css
$css['all']['theme'][drupal_get_path('theme', 'openpublish_theme') . '/css/style.css'] = true;
$vars['styles'] = drupal_get_css($css);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top