Поведение файлов CSS Drupal

нам нужно поддерживать страницу, созданную другим агентством с помощью drupal 8. Теперь мы сталкиваемся с некоторыми странными проблемами с их управлением активами, особенно с файлами css:

Допустим, у нас есть тематический модуль с именем my_theme. Теперь, взглянув на исходный код, вы увидите много CSS и ДВА CSS-файла, связанных с:

  • /themes/custom/my_theme/css/drupal.css?qeyhny
  • /themes/custom/my_theme/css/style.css?qeyhny

Взглянув на исходный код в продакшене, вы увидите совсем другое: у нас осталось только два css-файла, а папка больше не /themes/custom/my_theme:

  • /sites/default/files/css/css_VKKggqUAg-CIbtiO65y1CJC-n5vszoMBBV-yp7EeBIM.css
  • /сайты/по умолчанию/файлы/CSS/css_0AY-LeGpCop5parFpvUGlHf9WBkxLfeAkxrh6YVVQb8.css

Модуль AdvAgg не активен.

Информационный файл из темы выглядит следующим образом:

name: my theme
type: theme
engine: mytwig
description: 'My bootstrap based theme'
package: My
core: 8.x
libraries:
  - my_theme/global-styling
ckeditor_stylesheets:
  - css/style.css
regions:
  sidebar_first: 'Left sidebar'
  sidebar_second: 'Right sidebar'
  content: 'Content'
  header: 'Header'
  primary_menu: 'Primary menu'
  secondary_menu: 'Secondary menu'
  logo: 'Logo'
  footer: 'Footer'
  footer_copyright: 'Footer copyright'
  highlighted: 'Highlighted'
  help: 'Help'
  breadcrumb: 'Breadcrumb'

глобальный стиль моей темы:

global-styling:
  css:
    theme:
      css/drupal.css: {}
      css/style.css: {}
  js:
    js/vendor/bootstrap4/bootstrap.bundle.js: {}
    js/vendor/jquery.mousewheel.js: {}
    js/vendor/jquery-ui-1.12.1.custom/jquery-ui.js: {}
    js/vendor/jquery.ui.touch-punch.js: {}
    js/modules/common.bundle.js: {}
    js/modules/Swapbackground.bundle.js: {}
    js/modules/LazyLoad.bundle.js: {}
    js/modules/Fancyboxes.bundle.js: {}
    js/modules/Collapses.bundle.js: {}
    js/modules/HeroSlider.bundle.js: {}
    js/modules/Menu.bundle.js: {}
    js/modules/Sliders.bundle.js: {}
    js/modules/SwitchLang.bundle.js: {}
  dependencies:
  - core/jquery
  - core/jquery.ui
  - core/jquery.ui.draggable
  - core/drupal

Чтобы решить проблемы с развертыванием, я просто хочу знать, как это могло быть реализовано. Может ли кто-нибудь дать мне подсказку? Когда Drupal делает ссылку прямо из моей темы, а когда из каталога сайта?


person j0nnybrav0    schedule 13.08.2020    source источник


Ответы (1)


Технически ваш сайт всегда будет читать CSS по следующему пути:

/themes/custom/my_theme/css/style.css
/themes/custom/my_theme/css/drupal.css

Как настроено в вашем файле my_theme.libraries.yml. Файлы, которые вы там видите, — это кеш, который Drupal генерирует для более быстрой загрузки вашего CSS для пользователей. Когда вы очистите системный кеш, эти файлы будут удалены и созданы заново.

Я бы посоветовал вам включить в файл .gitignore следующее:

/sites/default/files
/themes/custom/my_theme/css/drupal.css?*
/themes/custom/my_theme/css/style.css?*

Кроме того, для будущих ссылок на тематические аспекты Drupal следующая ссылка даст вам лучшее понимание того, как это определяется. Чего я обычно добиваюсь в своих проектах drupal, так это настройки Sass/Less на сайте, и я игнорирую папку css, потому что мы настроили систему автоматического развертывания, которая будет компилироваться из папки sass/less каждый раз, когда запускается развертывание.

person gcerni    schedule 17.08.2020
comment
Большое спасибо за ваши объяснения. Действительно, это была проблема с кешем, распределенная по трем разным серверам развертывания. Drupal действует так, как описано у вас. - person j0nnybrav0; 15.09.2020