Рейтинг:1

Как загрузить библиотеку JS (в пользовательском модуле) из темы, используя только JS?

флаг ph

Мне нужны пользовательские подтемы, одна для администратора и одна для внешнего интерфейса. обоим нужно загрузить js-библиотеку листовок, которую я пытаюсь поместить в пользовательский модуль.

У меня немного работает подтема, и мои глобальные скрипты js работают, но не могу загрузить или запустить модуль.

темы /angas_admin/

angas_admin.info.yml

# подтема от haydent httech.com.au
имя: Ангас Админ
тип: тема
описание: «Семь подтем от Хайдена - httech.com.au»
ядро: 8.x
базовая тема: семь

библиотеки:
  - angas_admin/глобальный стиль
  - angas_admin/глобальные скрипты
  - angas_module/листовка  

регионы:
  заголовок: 'Заголовок'
  pre_content: 'Предварительный контент'
  панировочные сухари: панировочные сухари
  выделено: выделено
  Помогите помогите
  содержание: содержание
  page_top: 'Верх страницы'
  page_bottom: 'Внизу страницы'
  sidebar_first: 'Первая боковая панель'
регионы_скрытые:
  - сайдбар_первый

angas_admin.libraries.yml

глобальный стиль:
  версия: 1.х
  CSS:
    тема:
      css/style.css: {}
глобальные скрипты:    
  версия: 1.х 
  js:
    js/script.js: {}

модули/angas_module/

angas_module.info.yml

имя: Модуль Ангас
описание: карта haydent httech.com.au
тип: модуль
ядро: 8.x

библиотеки:
  - angas_module/листовка

angas_module.libraries.yml

листовка:
  версия: 1.х
  CSS:
    тема:
      css/листовка.css: {}
  js:
    js/листовка.js: {}
флаг ru
Это выглядит в основном правильно, вы включили `angas_module`? (Вы не можете зависеть от неустановленного модуля). Кроме того, я бы удалил `libraries: - angas_module/leaflet` из `angas_module.info.yml`, потому что это безоговорочно загрузило бы Leaftlet на ВСЕХ страницах.
флаг ph
Да, angas_module включен. тот бит, который вы предлагаете удалить, я пробовал несколькими способами загрузить библиотеку модулей по подтеме. это нормально, если он загружен на всех страницах. в темах script.js у меня есть код, который ищет определенный элемент на странице и вставляет/запускает на нем код листовки для создания карты. я просто хочу, чтобы библиотека листовок была доступна для моих 2 подтем angas_admin и angas_front (не упоминается, но будет)
Рейтинг:3
флаг in

Вам нужно добавить библиотеку вашего модуля в качестве зависимости от библиотеки вашей темы (или любой другой библиотеки, которая зависит от нее). Это обеспечит его постоянную загрузку и доступность для библиотеки вашей темы. Видеть Объявление зависимостей в документах д.о.

Например, в файле library.yml вашей темы:

глобальные скрипты:    
  версия: 1.х 
  js:
    js/script.js: {}
  зависимости:
    - angas_module/листовка 

После добавления его в качестве зависимости для ваших библиотек удалите его из файла .info.yml вашей темы (не требуется). И удалить его из файла .info.yml модуля (тоже не нужно).

флаг ph
Итак, среди прочего, я попробовал этот подход, который тоже не сработал, но после вашей рекомендации он дал мне уверенность мыслить немного шире и попробовал кнопку «очистить все кеши» в разделе производительности администратора, и это исправило это. Несмотря на то, что в этом разделе у меня нет кэширования или агрегации ... Есть ли способ остановить это кэширование, по крайней мере, во время разработки? Спасибо за Ваш ответ :)
флаг ph
Я узнал, как отключить кеширование.

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

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.