Не загружайте jQuery на сайт Drupal 8 - даже если он зависит от модулей?


Как я могу остановить загрузку jQuery в Drupal 8, даже если модули, использующие jQuery, находятся на странице?

У меня есть существующее руководство по стилю, которое я размещаю на сайте Drupal 8. У меня уже есть весь javascript, включая jQuery, как часть руководства по стилю, и я хочу, чтобы это было отдельно от Drupal.

Для анонимных пользователей все работает нормально. Однако пользователи с правами администратора имеют доступ к панели инструментов администратора. Это загружается в собственную версию jQuery Drupal, которая конфликтует с руководством по стилю и приводит к поломке панели инструментов администратора.

Я попытался добавить это в файл библиотек моей темы:

core/jquery: false
core/jquery.once: false
core/jqueryui: false 

При проверке страницы оказалось, что некоторые ссылки на jQuery заблокированы, но не все из них:

enter image description here

Однако, когда я удаляю свои записи из файла библиотек моей темы, я вижу, что на самом деле загружаются все те же файлы jQuery, поэтому я на самом деле не думаю, что это чего-то достигнет.

enter image description here

Я знаю, что обычно никто не загружает jQuery самостоятельно и просто использует версию Drupal, но для руководства по стилю требуется последняя версия, а также используется другими приложениями, поэтому я не могу ее сильно изменить.

Author: kiamlaluno, 2016-05-24

2 answers

Вы должны иметь возможность изменять файлы JavaScript, включенные на странице, с помощью реализации hook_js_alter().

 3
Author: Pierre Buyle, 2016-05-24 21:47:35

В НАЗВАНИИ ТЕМЫ.тема:

<?php

function THEMENAME_js_alter(&$javascript, \Drupal\Core\Asset\AttachedAssetsInterface $assets) {
  $javascript['core/assets/vendor/jquery/jquery.min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery.ui/ui/core-min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery.ui/ui/widget-min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery-form/jquery.form.min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery.cookie/jquery.cookie.min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery.ui/ui/mouse-min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery.ui/ui/draggable-min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery.ui/ui/resizable-min.js']['data'] = '';
  $javascript['core/assets/vendor/jquery.ui/ui/dialog-min.js']['data'] = '';
  $javascript['core/misc/dialog/dialog.jquery-ui.js']['data'] = '';
  $javascript['core/assets/vendor/jquery-joyride/jquery.joyride-2.1.min.js']['data'] = '';
}
 1
Author: Evanss, 2016-05-26 09:31:56