JavaScript не загружается в Drupal (8) - PullRequest
0 голосов
/ 09 мая 2018

Я создаю свой первый сайт в Drupal (преобразовываю существующий сайт в CMS Drupal 8).

Я загрузил библиотеки CSS и Script. CSS работает, а файлы Script - нет. Я не уверен, что файлы сценариев не загружаются или jQuery не загружаются - или оба.

Я что-то не так делаю?

Вот код, вызывающий библиотеки в файле .info:

libraries:
  - saq7704/global-styles
  - saq7704/global-scripts

и вот код в файле библиотеки:

global-styles:
  version: 1.x
  css:
    theme:
      css/styles.css: {}

global-scripts:
  version: 1.x
  js: 
    js/scripts.js: {}
    js/responsiveTabs.js: {}
  dependencies:
    - core/jquery

1 Ответ

0 голосов
/ 13 мая 2018

Мне интересно, что CSS загружается. Поскольку вы должны явно присоединить свои библиотеки к некоторому массиву визуализации (элемент, узел, страница и т. Д.). Их объявление в информационном файле вашего модуля вообще не должно ничего делать.

Посмотрите документы по Добавление таблиц стилей (CSS) и JavaScript (JS) в модуль Drupal 8 .

Чтобы загружать свои библиотеки на каждую страницу, вы должны использовать hook_page_attachments:

<?php

/**
 * Implements hook_page_attachments().
 */
function MYMODULE_page_attachments(array &$attachments) {

  $attachments['#attached']['library'][] = 'saq7704/global-styles';
  $attachments['#attached']['library'][] = 'saq7704/global-scripts';

  // Also have a look at this gem.
  // If you've written your JS file the right way you now could do
  // <code>console.log(settings.MYMODULE.foo);</code> in your JS
  // and guess what it will print ;)
  $attachments['#attached']['drupalSettings']['MYMODULE']['foo'] = 'bar';
}

Прочтите, как правильно писать файлы Drupal JS: Обзор JavaScript API (обратите внимание на Drupal.behaviors, context и settings). Тогда ваш *.libraries.yml должен выглядеть лучше:

global-scripts:
  version: 1.x
  js: 
    js/scripts.js: {}
    js/responsiveTabs.js: {}
  dependencies:
    - core/jquery
    - core/jquery.once
    - core/drupalSettings
...