xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Простой способ вынести все 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>
</html>

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

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

Комментарии RSS

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

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

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

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

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

это и есть "нормальный js"

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

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

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

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

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

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

можно, только зачем

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

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

кэширования чего?

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

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании