How to do the same, only for CSS? I could not do it using the functions: drupal_get_css, drupal_add_css
Drupal_add_css does not have the "scope" attribute
Я тут, кажется, чего-то не понимаю.
Какой сакральный смысл заключён в переносе CSS в конец страницы? Ну понятно JS, там это бывает обосновано, но переносить стили зачем?
Поэтому, видимо, в drupal_add_css() и не поддерживается 'scope', т.к. просто нет смысла.
Но в drupal_add_js() их есть:
scope: The location in which you want to place the script. Possible values are 'header' or 'footer'. If your theme implements different regions, you can also use these. Defaults to 'header'.
Ну ежели прихоть эксперимент, то в начало документа отправляем стили через drupal_add_css(), а в конец документа - тупо правим html.tpl.php или вставляем собственный коллбек (из template.php или ещё откуда-то) по типу: <?php print my_footer_styles(); ?>
В этом коллбеке проверяем условия, согласно которым должны подключаться дополнительные CSS и, собственно, подключаем. Например, как-то так:
Да просто сделайте тогда вставку в хедер через коллбек темы (я уже привёл возможный пример выше). Или даже полностью прописать вставку в html.tpl.php в хедере. Так, как вы хотите - нужно иначе делать, не тем способом, что вы показали.
Но, @VasyOK, еще раз - тебе не нужно переносить стили вниз страницы. Если это ради "похвалы" гугло-чеккера - достаточно делать основные стили инлайновыми, вместо загружаемых, для ускорения стилизации основных элементов.
Балы должны рости не с потолка, а от реальных улучшений.
Важно понимать что именно должно находится вверху (инлайново), а что можно вынести в основные стили.
Крайне сомневаюсь что автоматический вынос advagg'ом будет хоть сколько-то близок к реальным нуждам.
Комментарии
Можно в настройках ЕМНИП модуля
https://gist.github.com/pascalduez/1418121/75f0dd9a71a24cae7112aa905abc3...
Вообще, скрипты не обязательно переносить в конец страницы, достаточно правильно распределять скоуп при добавлении.
А CSS как? Там же человек пишет:
How to do the same, only for CSS? I could not do it using the functions: drupal_get_css, drupal_add_css
Drupal_add_css does not have the "scope" attribute
Я тут, кажется, чего-то не понимаю.
Какой сакральный смысл заключён в переносе CSS в конец страницы? Ну понятно JS, там это бывает обосновано, но переносить стили зачем?
У Васька есть крутой сеошник(тм), который заставляет его делать всякие пошлости
Стили нет смысла переносить.
Поэтому, видимо, в drupal_add_css() и не поддерживается 'scope', т.к. просто нет смысла.
Но в drupal_add_js() их есть:
Кто регулярно и давно читает блог Никлана, тот знает, как это выглядит)))
Стили нужно переносить в конец страницы, чтобы не забыть, как выглядит Times New Roman.
Честно сеошник именно это не просил (хотя в других темах там да, встречаются странные вопросы от него).
Т.е. неужли нельзя сделать чтобы какие-то файлы стилей подгружались вверху документа какие-то внизу?
Зачем? Эксперимент.
PPS. Можно (и кошернее) добавить в
hook_preprocess_page()template_preprocess_html() собственную переменную со стилями для футера html.tpl.phpВообще говоря есть такое понятие, как critical_css. Оно имеет смысл. Если с умом подойти.
Ну ежели
прихотьэксперимент, то в начало документа отправляем стили через drupal_add_css(), а в конец документа - тупо правим html.tpl.php или вставляем собственный коллбек (из template.php или ещё откуда-то) по типу:<?php print my_footer_styles(); ?>
В этом коллбеке проверяем условия, согласно которым должны подключаться дополнительные CSS и, собственно, подключаем. Например, как-то так:
<?php
function my_footer_styles() {
$styles = '';
if (какое-то-неведомое-условие) {
$styles .= '<link type="text/css" rel="stylesheet" href="PATH_TO_CSS_FILE_1" media="all" />' . PHP_EOL;
$styles .= '<link type="text/css" rel="stylesheet" href="PATH_TO_CSS_FILE_2" media="all" />' . PHP_EOL;
}
return $styles;
}
?>
PS. Изврат, да.
"в начало документа отправляем стили через drupal_add_css" - это как?
Условия у меня нет.
Например, из hook_preprocess_page()
<?php
function my_module_preprocess_page(&$vars) {
// Add new CSS.
drupal_add_css('path/to/css/foo.css');
// Rebuild the 'styles' variable.
$vars['styles'] = drupal_get_css();
}
?>
Да, собственно любым способом и/или хуком (т.е. можно даже из .info темы/модуля) - стили всё равно загрузятся из 'header' документа (т.е. в начале).
Азы же вроде.
ок, упрощаю до плинтуса. всего один файл темы style.css пытаюсь перенести вверх страницы остальные стили пусть внизу будут. Делаю так:
template.php
<?php
function mytheme_preprocess_page(&$vars) {
drupal_add_css('sites/all/themes/mytheme/css/style.css');
$vars['head_styles'] = drupal_get_css();
}
?>
html.tpl.php
<?php
<head>
<title><?php print $head_title; ?></title>
<?php print $head; ?>
<?php print $scripts; ?>
<?php print $head_styles; ?>
</head>
<body>
<?php print $page_top; ?>
<?php print $page; ?>
<?php print $styles; ?>
<?php print $page_bottom; ?>
</body>
?>
не работает
Да просто сделайте тогда вставку в хедер через коллбек темы (я уже привёл возможный пример выше). Или даже полностью прописать вставку в html.tpl.php в хедере. Так, как вы хотите - нужно иначе делать, не тем способом, что вы показали.
Я, очень давно, делал вот такую вставку инлайн стилей.
Но, @VasyOK, еще раз - тебе не нужно переносить стили вниз страницы. Если это ради "похвалы" гугло-чеккера - достаточно делать основные стили инлайновыми, вместо загружаемых, для ускорения стилизации основных элементов.
инлайново, я advagg-ом выставил. Увы недостаточно.
Не достаточно для чего?
Ради "похвалы" гугло-чеккера. Не то чтобы совсем недостаточно. Балы то растут. но не так сильно как хотелось бы.
Балы должны рости не с потолка, а от реальных улучшений.
Важно понимать что именно должно находится вверху (инлайново), а что можно вынести в основные стили.
Крайне сомневаюсь что автоматический вынос advagg'ом будет хоть сколько-то близок к реальным нуждам.
Может лучше поднять ттфб, чтобы была почти сразу сотка?
не понял
https://www.google.com/search?q=%D1%82%D1%82%D1%84%D0%B1&ie=utf-8&oe=utf...
Трансфер тайм оф фёст байт, или что-то около того. Естественно, я имел ввиду не поднять, а снизить его, т.к. чем он ниже, тем лучше.
а где это настраивается?
Везде. Ведь скорость отдачи первого байта зависит от серверного железа, серверного софта, и конечно же от кривости рук разработчика.