drupal добавить css не работает

мне нужно использовать 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>

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

9 ответов


не совсем понятно, где вы выбираете шаблон, который у вас есть в вашем примере. Если вы выбираете его из модуля, вы можете просто использовать 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 );

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

Edit:

Я думаю, что это не сработало, потому что я не написал путь к файлу стиля правильно :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() внутри вашего шаблона.файл php; на этой странице имеет хороший пример того, как это сделать.


ответ был очень много использовать CSS инжектор модуль - отличный маленький аддон!

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

позволяет администраторам вводить CSS в вывод страницы на основе настраиваемых правил. Это полезно для добавления простых настроек CSS без изменения официальной темы сайта. CSS добавляется с помощью стандартной функции drupal_add_css() и уважает кэширование страниц и т. д. В 2.X brach использует CTools, чтобы CSS мог быть включены с изменениями функций (т. е. CSS, который улучшает внешний вид представления, может быть упакован с представлением).


этот код внутри шаблона.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 не возвращает путь относительно базового пути.

global $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(); 

попробуйте это общие.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);