Найкращий спосіб розширити модуль, менше знайдений у веб / css / source / module, як _minicart.less?


15

Який тоді найкращий спосіб розширити менше вмісту файлів <module>/web/css/source/module/, наприклад, наприклад Magento_Checkout/web/css/source/module/_minicart.less?

Припускаючи, що до

А) ПЕРЕГЛЯД

  1. менше пов'язаної теми, ви повинні створити (або скопіювати) меншу кількість з тим самим назвою батьківської теми та помістити її у свою тему, як ця theme-frontend-blank/web/css/source/_buttons.less-><your-theme>/web/css/source/_buttons.less
  2. менш конкретний модуль, ви повинні створити (або скопіювати) менший з тим самим назвою батьківської теми та помістити його у свою тему, як це theme-frontend-blank/Magento_Theme/web/css/source/_module.less-><your-theme>Magento_Theme/web/css/source/_module.less
  3. Більше, ніж користувальницький інтерфейс, ви повинні створити (або скопіювати) менший вміст з тим самим вмістом у папці бібліотеки та ввести його у свою тему так magento2-base/lib/web/css/source/lib/_buttons.less:><your-theme>Magento_Theme/web/css/source/lib/_buttons.less

і до

Б) ПОДРОБИТИ

  1. менше теми, ви повинні створити файл _extend.less у вашій темі, додаючи _extend в такому імені, <your-theme>/web/css/source/_navigation_extend.lessщоб розширити theme-frontend-blank/web/css/source/_navigation.lessІ зареєструвати цей файл за допомогою директиви @import у _extend.less без вмісту теми в веб / css / source ->@import "_navigation_extend.less"
  2. менш конкретний модуль, ви повинні створити файл _extend.less на шляху вашого тематичного модуля, як цей, <your-theme>Magento_CatalogSearch/web/css/source/_extend.lessякий розширює оригінальний файл _module.less Magento_CatalogSearch
  3. Більше, ніж UI, ви повинні створити менше з тим самим вмістом у папці бібліотеки, додавши _extend в ім'я, як це, <your-theme>Magento_Theme/web/css/source/lib/_buttons_extend.lessщоб розширити magento2-base/lib/web/css/source/lib/_buttons.lessІ зареєструвати цей файл за допомогою директиви @import у _extend.less без вмісту теми у веб / css / source - >@import "lib/_buttons_extend.less"

Теорія повинна запропонувати створити _minicart_extend.less, але це не працює автоматично. Можливо, вам слід імпортувати цей файл у _extend.less цього модуля, як пояснено у B1 або B3?

І чому ці компоненти, що мають менший розмір, не включаються автоматично в розбір css, якщо це правильний спосіб їх розширення, але їх потрібно імпортувати в _extend.less?

(Тут також виникає ще одне питання: чим відрізняються web/css/source/lib/_buttons.lessі web/css/source/_buttons.less? 😕)

Я трохи розгублений. Сподіваюся, хтось міг мені допомогти.

Вибачте за цей довгий текст.


Джерела:

Відповіді:


13

Згідно з умовами Magento 2, найкращий спосіб розширити стилі модулів:

Якщо ми хочемо розширити стилі, Magento_Checkout/web/css/source/module/_minicart.lessнам потрібно мати 2 файли

  • <your-theme>/Magento_Checkout/web/css/source/_extend.lessкуди ми імпортуємо власні розширення. В цьому випадку@import "_minicart_extend.less"

  • <your-theme>/Magento_Checkout/web/css/source/_minicart_extend.less який буде містити наші власні стилі.

Причина, чому нам потрібен _extend.lessфайл, щоб вказати це, @importsце тому, що Magento автоматично включає лише _extend.lessмодуль. Перевірка та додавання всіх *_extend.lessавтоматично буде трудомісткою, і тому вона не була реалізована так.

У Magento Blank файли тем, які відповідають за minicart, знаходяться в /vendor/magento/theme-frontend-blank/Magento_Checkout/

Ми також могли б додати всі наші власні стилі безпосередньо у _extend.less. Однак розбиття їх на більш дрібні та конкретні файли, як в оригінальному модулі, забезпечує чіткість та краще впорядкованість коду. Це також рекомендований спосіб відповідно до стандартів Magento 2.


Дякую @Jalogut! Отже, я також міг би назвати "_minicart_extend.less" як "foobar.less", і це не має ніякого значення, оскільки це те, що ви @import в _extend.less не враховує. Додавання "_extendd.less" до назви компонента це лише умова, яка допоможе вам зберегти все зрозуміліше?
Лоріна

Точно така ідея.
Ялогут

@Jalogut Ви впевнені, що вони говорять це "Перевірка та додавання всіх * _extend.less автоматично забирає багато часу", або це ваша здогадка? тому що IMO впевнений, що потрібно трохи більше, але не так багато, тому що змушувати розробників робити це кожен раз, коли вони хочуть налаштувати (плюс спочатку невелика плутанина)
medmek

"Причина, для якої нам потрібен файл _extend.less для вказівки @imports, полягає в тому, що Magento автоматично включає лише _extend.less на модуль." Я думаю, ви хотіли сказати, що кожен модуль має один _extend.less, і вони в кінці об'єднуються в один великий файл _extend.less
Чорний

"Ми також могли б додати всі наші власні стилі безпосередньо у _extend.less" Це погана ідея, оскільки "grunt watch" не слухає змін у цьому файлі. Використовуйте його лише для імпорту та завжди телефонуйте grunt refreshпісля внесення змін у цей файл.
Чорний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.