Рейтинг:4

Загрузка отдельных файлов css для пользовательских модулей

флаг in

У меня есть собственный модуль, который создает три страницы.Каждая страница имеет контроллер, файл ветки и файл css. То, что я хотел бы сделать, это загружать файлы css только тогда, когда они необходимы. Я создал файл library.yml следующим образом:

мой модуль:
  версия: 1.х
  CSS:
    тема:
      css/page1.css: {}
      css/page2.css: {}
      css/page3.css: {}

Это загружает три файла css всякий раз, когда я отображаю любой из трех файлов. Что я хотел бы сделать, так это каким-то образом загрузить page1.css только тогда, когда запрашивается page1. Есть ли способ разделить файл library.yml на разделы, в каждом из которых указан один файл css, а затем загрузить его в шаблон с помощью прикрепить_библиотеку() вызов или предварительная обработка??

Или мне нужно создать отдельный модуль для каждой страницы? Причина, по которой я поместил три страницы в один модуль, заключается в том, что они являются разделом сайта, который использует другие активы.

флаг cn
Кстати, рекомендуется использовать `версию` только в том случае, если вы собираетесь увеличивать ее при каждом изменении вашей библиотеки. Этот номер версии формирует строку блокировки кеша для этих конкретных ресурсов js/css и может вызвать проблемы, если вы используете обратный прокси-сервер, такой как лак, в противном случае. Если вы удалите `версию`, будет использоваться глобальная строка очистки кеша, которая изменяется при очистке кеша и позволяет обойти проблему.
Рейтинг:7
флаг de

Вы можете создать несколько записей библиотеки в *.libraries.yml.

Страница 1:
  CSS:
    тема:
      css/page1.css: {}

страница 2:
  CSS:
    тема:
      css/page2.css: {}

стр.3:
  CSS:
    тема:
      css/page3.css: {}

Затем вы можете подключить соответствующую библиотеку к узлу, к которому она должна быть подключена, используя мой_модуль.страница.3 (для третьей страницы).Вы должны прикрепить его к массиву рендеринга, возвращаемому вашим контроллером на данной странице, следующим образом:

класс ExampleController расширяет ControllerBase {
  функция firstPageCallback() {
    // Создайте свой массив $page (не показан).
    // Затем присоединяем:
    $page['#attached']['libraries'][] = 'my_module.page.1';
  }
}

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

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