Drupal 7: добавление веса к drupal_add_ js не меняет положение скрипта - PullRequest
0 голосов
/ 30 января 2020

У меня есть целая куча модулей, которые добавляют js скрипты к голове, используя drupal_add_js. Я хочу убедиться, что один из сценариев появляется над всеми остальными. Для этого я добавил значение weight к параметрам:

drupal_add_js(some_GTM_script.js, 
 array(
    'type' => 'inline',
    'scope' => 'head_scripts',
    'weight' => 99,
 ));

Но ничего не меняется. Я пробовал 99, -99, 0, 10, но неважно, какая позиция скрипта не меняется.

Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 30 января 2020

Используйте отрицательный вес в соответствующих scope и group.

вес : число, определяющее порядок, в котором JavaScript добавляется к страница относительно других JavaScript с теми же значениями ' scope ', ' group ' и 'every_page'.

группа : номер, обозначающий группу, в которую нужно добавить JavaScript. Доступны следующие константы:

  • JS_LIBRARY: любые библиотеки, настройки или jQuery плагины.
  • JS_DEFAULT: любой уровень модуля JavaScript.
  • JS_THEME: Любой тематический слой JavaScript.

Номер группы служит весом: JavaScript в группе с более низким весом отображается на странице перед JavaScript в пределах группы с более высоким весом.

Итак, если ' head_scripts ' является первой областью, которая появится на странице, вам все равно нужно определить скрипт ' group ', ie. Скрипты библиотеки появляются перед скриптами темы.

Для обеспечения приоритета вашего скрипта вам может понадобиться использовать JS_DEFAULT - x или даже JS_LIBRARY - x, если вы хотите, чтобы он был включен перед чем-либо, даже jQuery et c.

drupal_add_js(some_GTM_script.js, 
 array(
    'type' => 'inline',
    'scope' => 'head_scripts',
    'group' => JS_LIBRARY - 1
    'weight' => -99,
 ));
...