Включать внешние библиотеки JS/CSS в модуль?


Что такое эквивалент Drupal 8 для включения внешних библиотек (таких как сайты/все/библиотеки) для пользовательских модулей?

 2
8
Author: Kevin, 2015-11-09

3 answers

Цитирование этого сообщения в блоге

Основные изменения API в Drupal 8

Функции drupal_add_js() и drupal_add_css() для ручного включения файлов JS/CSS были удалены в пользу определений библиотек, которые правильно объявляют их зависимости. В результате этого все модули, а также темы должны объявлять свои библиотеки, чтобы включать файлы JS и/или CSS. Во время разработки D8 способ объявления библиотеки эволюционировал от переименованного информационный крюк (hook_library_info()), чтобы, наконец, использовать YAML (как и во многих других местах в D8) , описав библиотеки в *.библиотеки.файлы yml. Информационный крючок, наконец, был полностью удален. Смотрите запись об изменении для получения дополнительной информации . Новый крючок hook_library_info_alter(), конечно, все еще существует.

Еще одним большим изменением является использование Composer для управления зависимостями, как это делают многие другие современные фреймворки. Хотя Composer предназначен в первую очередь для библиотек PHP, его можно использовать для библиотек JS тоже. Использование Composer не только избавляет вас от необходимости вручную загружать библиотеку с Github и т. Д., А затем вручную извлекать и загружать файлы на ваш сервер, Но также устраняет источник ошибок при размещении файлов в правильной структуре каталогов. (Примечание: Интеграция Composer еще не полностью завершена, см.: https://www.drupal.org/node/2372815)

 3
Author: Adi, 2020-06-15 09:13:00

Модуль.библиотеки.файл yml является большим улучшением в Drupal 8. Вы можете определить файлы css и js, необходимые для одной задачи в вашем модуле, чтобы другие модули могли их использовать.

Но это не должно делать модуль библиотек полностью избыточным. Для внешних библиотек, которые не относятся к одному модулю, все же может быть целесообразно использовать папку общей библиотеки:

Библиотеки API 8.x

Чтобы ответить на этот вопрос, эквивалентом в drupal 8 является то же, что и в drupal 7. Но мы должны посмотреть, как разработчики модулей будут использовать новые возможности, и сколько останется для общих библиотек.

Редактировать:

Многих людей смущает название этих 2 крючков:

  1. hook_library_info()
  2. hook_libraries_info()

Первый из них находится в ядре drupal 7 и был заменен новой системой библиотек в drupal 8. Второй - из библиотек модуля contrib API и все еще жив.

 1
Author: 4k4, 2015-11-14 15:48:18

Вы не указали, хотите ли вы, чтобы библиотека обслуживалась через CDN, но для многих людей это может быть так. Вот пример с Fontawesome (библиотека значков webfont).

Это из темы, но принцип точно такой же с модулем.

мифема.библиотеки.yml:

[...]

fontawesome:
  js:
    "//kit.fontawesome.com/1abc23d4ef.js": { type: external }

мифема.информация.yml:

[...]

libraries:
  - mytheme/fontawesome

(Затем очистите кэш.)

Если вы включаете CSS, вам нужно указать его категорию SMACSS (базовая, компонент, тема и т.д.), который управляет порядком его загрузки.

Обратите внимание, что я не на самом деле уверен, что type: external делает (он все еще работает без). Если кто-нибудь сможет уточнить, я отредактирую ответ.

Дальнейшее чтение:

 0
Author: William Turrell, 2019-07-20 15:20:05