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();
}
пояснил:
- Аланья-это название темы
- 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);