Как переместить JavaScript в нижний колонтитул в Drupal - PullRequest
3 голосов
/ 05 февраля 2011

за проблему производительности в drupal

как переместить JavaScript в нижний колонтитул в файле TPL ??

Ответы [ 5 ]

4 голосов
/ 21 октября 2013

Я только что ответил на аналогичный вопрос на Drupal. Ответы: https://drupal.stackexchange.com/questions/46202/move-aggregated-js-file-to-the-footer/89590#89590

Я скопировал и вставил ответ ниже для быстрого ознакомления.

Кроме того, я не уверенесли вопрос должен быть перенесен в Drupal Ответы или объединен, или еще, если у кого-то есть идея, пожалуйста, выполните это или посоветуйте, как это сделать.Спасибо.


Нашел этот превосходный фрагмент кода для Drupal 7: https://gist.github.com/pascalduez/1418121

Он предлагает способ иметь $ script и $ head_scripts, чтобы вы могли указать, какой JSфайлы должны идти в голову.Например, Modernizr должен пойти в голову сценариев.

Я копирую вставку ниже решения в ссылку для будущего ответа.

Приветствия.

html.tpl.php

<!DOCTYPE html>
<html<?php print $html_attributes; ?>>
<head>
<?php print $head; ?>
<title><?php print $head_title; ?></title>
<?php print $styles; ?>
<?php print $head_scripts; ?>
</head>

<body<?php print $body_attributes;?>>
<?php print $page_top; ?>
<?php print $page; ?>
<?php print $scripts; ?>
<?php print $page_bottom; ?>
</body>
</html>

template.php

// Used in conjunction with https://gist.github.com/1417914

/**
* Implements hook_preprocess_html().
*/
function THEMENAME_preprocess_html(&$vars) {
// Move JS files "$scripts" to page bottom for perfs/logic.
// Add JS files that *needs* to be loaded in the head in a new "$head_scripts" scope.
// For instance the Modernizr lib.
$path = drupal_get_path('theme', 'THEMENAME');
drupal_add_js($path . '/js/modernizr.min.js', array('scope' => 'head_scripts', 'weight' => -1, 'preprocess' => FALSE));
}

/**
* Implements hook_process_html().
*/
function THEMENAME_process_html(&$vars) {
$vars['head_scripts'] = drupal_get_js('head_scripts');
}
4 голосов
/ 05 февраля 2011

В вашей теме page.tpl.php переместите строку print $scripts; в нижний колонтитул. JS-код некоторых модулей не нравится, но у меня с ним работало большинство.

http://groups.drupal.org/node/8399

0 голосов
/ 24 января 2014

Я обнаружил, что перемещение

print $scripts
внизу редко работает. В большинстве случаев вам понадобится решение, которое позволит сохранить некоторые сценарии в заголовке, в то время как другие могут быть перемещены в нижний колонтитул.

Лично я использую drupal_add_js в template.php, используя преимущества области действия.

Из документации Drupal:

scope: The location in which you want to place the script.<br/>Possible values are 'header' or 'footer'.<br/>If your theme implements different regions, you can also use these.<br/>Defaults to 'header'.
0 голосов
/ 24 января 2014

Я думаю, что это должно перейти к https://drupal.stackexchange.com/questions/3171/add-javascript-at-the-bottom-of-a-page/101025#101025

Там, где есть дублирующее обсуждение.

0 голосов
/ 05 февраля 2011

Самый быстрый способ переместить все JS Drupal в нижний колонтитул - переместить $scripts непосредственно перед закрывающим тегом тела И перед $closure.

В ядре Drupal 6Это не вариант интерфейса, который вы можете легко проверить.Но в admin/settings/performance есть опция для сжатия файлов JS.Рекомендуется для производственного использования.

Чтобы поместить файлы JS в конец, перейдите в файл page.tpl.php и найдите <?php print $scripts;?> или что-то подобное.Затем найдите $closure; и измените его:

    <!-- other theme code above -->
    <?php print $scripts; ?>
    <?php print $closure; ?>
    </body> 
</html> 
...