В html.tpl.php перенес $scripts и $styles в конец страницы. Можно сделать чтобы некоторые CSS и JS файлы все таки грузились в начале?

Главные вкладки

Комментарии

Аватар пользователя VasyOK VasyOK 11 мая 2018 в 19:16

А 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

Аватар пользователя OldWarrior OldWarrior 11 мая 2018 в 19:59

Я тут, кажется, чего-то не понимаю.
Какой сакральный смысл заключён в переносе CSS в конец страницы? Ну понятно JS, там это бывает обосновано, но переносить стили зачем?

Аватар пользователя OldWarrior OldWarrior 11 мая 2018 в 20:34

Поэтому, видимо, в 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'.

Аватар пользователя VasyOK VasyOK 11 мая 2018 в 20:39

Честно сеошник именно это не просил (хотя в других темах там да, встречаются странные вопросы от него).

Т.е. неужли нельзя сделать чтобы какие-то файлы стилей подгружались вверху документа какие-то внизу?
Зачем? Эксперимент.

Аватар пользователя OldWarrior OldWarrior 11 мая 2018 в 21:08

PPS. Можно (и кошернее) добавить в hook_preprocess_page() template_preprocess_html() собственную переменную со стилями для футера html.tpl.php

Аватар пользователя OldWarrior OldWarrior 11 мая 2018 в 20:58

VasyOK wrote:

...Эксперимент.

Ну ежели прихоть эксперимент, то в начало документа отправляем стили через 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. Изврат, да.

Аватар пользователя OldWarrior OldWarrior 11 мая 2018 в 21:45

VasyOK wrote:

"в начало документа отправляем стили через 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' документа (т.е. в начале).

Азы же вроде.

Аватар пользователя VasyOK VasyOK 12 мая 2018 в 21:55

ок, упрощаю до плинтуса. всего один файл темы 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>
?>

не работает Sad

Аватар пользователя OldWarrior OldWarrior 12 мая 2018 в 22:57

Да просто сделайте тогда вставку в хедер через коллбек темы (я уже привёл возможный пример выше). Или даже полностью прописать вставку в html.tpl.php в хедере. Так, как вы хотите - нужно иначе делать, не тем способом, что вы показали.

Аватар пользователя bumble bumble 12 мая 2018 в 23:33

Я, очень давно, делал вот такую вставку инлайн стилей.

Но, @VasyOK, еще раз - тебе не нужно переносить стили вниз страницы. Если это ради "похвалы" гугло-чеккера - достаточно делать основные стили инлайновыми, вместо загружаемых, для ускорения стилизации основных элементов.

Аватар пользователя VasyOK VasyOK 13 мая 2018 в 13:40

Ради "похвалы" гугло-чеккера. Не то чтобы совсем недостаточно. Балы то растут. но не так сильно как хотелось бы.

Аватар пользователя bumble bumble 13 мая 2018 в 13:44

Балы должны рости не с потолка, а от реальных улучшений.
Важно понимать что именно должно находится вверху (инлайново), а что можно вынести в основные стили.
Крайне сомневаюсь что автоматический вынос advagg'ом будет хоть сколько-то близок к реальным нуждам.

Аватар пользователя gun_dose gun_dose 13 мая 2018 в 17:46

Трансфер тайм оф фёст байт, или что-то около того. Естественно, я имел ввиду не поднять, а снизить его, т.к. чем он ниже, тем лучше.

Аватар пользователя gun_dose gun_dose 13 мая 2018 в 18:27

Везде. Ведь скорость отдачи первого байта зависит от серверного железа, серверного софта, и конечно же от кривости рук разработчика.