Drupal → Переместить все js файлы в конец html

20.11.2014

Простой способ вынести все js файлы в подвал — копируем файл modules/system/html.tpl.php в папку темы, если его ещё там нет, и переносим переменную $scripts перед $page_bottom:

<!DOCTYPE html>
<html lang="<?php print $language->language; ?>">
<head>
  <?php echo $head; ?>
  <title><?php echo $head_title; ?></title>
  <?php echo $styles; ?>
</head>
<body class="<?php echo $classes; ?>" <?php echo $attributes; ?>>
  <?php echo $page_top; ?>
  <?php echo $page; ?>
  <?php echo $scripts; ?>
  <?php echo $page_bottom; ?>
</body>

Очень редко могут возникнуть проблемы с контрибом, но как правило это из-за криворукости разработчиков.

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Ptihiy пробуйте копать в сторону https://www.drupal.org/project/nodesymlinks

xandeadx - могут возникать проблемы с темой, если для корректной работы ей нужно загрузить скрипт ДО HTML. Если тема под даной момент не заточена могут быть проблемы

кроме Modernizr я таких скриптов и тем не встречал

Я бы лучше advagg использовал. Там можно настроить что вверху, что внизу.
Вплоть до нормального сжатия в 1 файл.

А зачем это переводить в подвал ? не пойму, лень писать нормальный js или ?

advagg как по мне глючный. У меня хостинг сжатие делает. Вместе с базовым друпала конфетка получилась

C advagg вы что-то не так делаете. За всё время - ни одной проблемы не было :). Всегда идеально сжато 2 файла 1- CSS(в шапке) и 1- JS(подвал) без мусора. Ну иногда ещё 1 JS в шапке (если так требуется). Сжатие хостингом - совсем другая песня.

Владимир
21.11.2014, 17:35

По официальной документации Google, именно так и должны подключаться js скрипты.

Добавлю, что если нужно вывести свой js в футере можно сделать так
drupal_add_js('example.js', array('scope'=>'footer'));

Advagg, кстати, уже достаточно стабилен. Куча опций есть, к тому же компрессия есть, cdn, и прочие. И в качестве экспериментальной версии (в dev) вынос в подвал также css. Ну а для мелких сайтов можно попробовать, спасибо.

Гость
12.07.2015, 15:51

А можно таким же способом переместит CSS файлы(<?php echo $styles; ?>) в конец html ?

Гость
12.07.2015, 15:59

если честно, и сам не знаю, но googl PageSpeed просит )

Существует ли способ асинхронной загрузки js? Если, предположим, в теме подключить только один скрипт, который после загрузки будет последовательно подгружать остальные. Как это может отразиться на системе кэширования?

Спасибо за заметочку а то замучился три дня не мог понять почему не работают скрипты. Купил просто html шаблон и надо натянуть на drupal 7. В шаблоне были скрипты подключаемые перед закрытием body и не срабатывали.
Оказалось что библиотека jquery была устаревшей. Обновил с помощью модуля jquery-update перенес по вашему совету скрипты вниз и все заработало.
УРА

Сергей
16.04.2016, 11:33

Сделал все, как пишет автор. Перестает работать текстовый редактор. Что нужно сделать, чтобы скрипты были внизу и работал текстовый редактор?

Гость
17.11.2016, 17:50

Насчет редактора - прошло уже сколько лет и сколько они написали что пофиксили - никакого результата, я намучался и так и не поставил ничего снизу :(

Гость
25.01.2017, 14:24

BxSlider не работает, если скрипты перенести вниз. Сейчас бьюсь с этой проблемой...

Гость
25.01.2017, 16:39

Нет, BxSlider работает, извинения...

Лозин
18.04.2018, 13:01

если скрипты в футере - не работает views infinity scroll

Добавить комментарий