Czy jest jakaś różnica między rozszerzaniem motywu za pomocą _module.less
i _extend.less
? A jaka jest najlepsza praktyka przy rozszerzaniu modułu / motywu?
Moją pierwszą myślą było to, że lepiej jest używać go _module.less
podczas projektowania nowego modułu i _extend.less
podczas jego rozbudowy. Ale Luma używa, _module.less
gdy rozszerza pusty motyw, aby teoria zniknęła za oknem.
Jedyną różnicą, którą widzę między nimi, jest _module.less
importowany przed biblioteką responsywną i _theme.less
gdzie _extend.less
jest importowany po nich.
W tej kolejności są importowane vendor/magento/theme-frontend-blank/web/css/styles-l.less
//
// Blank theme desktop styles
// _____________________________________________
// These desktop styles are added to mobile
//
// Global lib + theme styles
// ---------------------------------------------
@import '_styles.less';
@import (reference) 'source/_extends.less';
//
// Magento Import instructions
// ---------------------------------------------
//@magento_import 'source/_module.less'; // Theme modules
//@magento_import 'source/_widgets.less'; // Theme widgets
//
// Media queries collector
// ---------------------------------------------
@import 'source/lib/_responsive.less';
@media-target: 'desktop'; // Sets target device for this file
@media-common: false; // Sets not to output common styles
//
// Global variables override
// ---------------------------------------------
@import 'source/_theme.less';
//
// Extend for minor customisation
// ---------------------------------------------
//@magento_import 'source/_extend.less';
.less
plik do motywu z tą samą ścieżką, co plik w motywie / module nadrzędnym, jest to przesłonięcie. Prawdopodobnie możesz to zweryfikować, tworząc pusty motyw _moduł w swoim motywie i sprawdzając, czy mają zastosowanie oryginalne style.php bin/magento setup:static-content:deploy
możesz zajrzeć dopub/static/frontend/<vendor>/<themeName>/<locale>/css/
i,pub/static/frontend/<vendor>/<themeName>/<locale>/<Module_Name>/css/
i będą pojawiać się dowiązania symboliczne dla plików * .less do twojego motywu lub motywu modułu / rodzica, z którego pochodzi.Proste wyjaśnienie lub różnica między obydwoma:
_extend.less
Jest to sposób na rozszerzenie / modyfikować style dominujące motywy na przykład jesteś zadowolony ze swojego macierzystego tematu Luma i po prostu chcą zmienić styl przycisk w niestandardowym tematu, wszystko co musisz zrobić, to utworzyć nowy plik_buttons_extend.less
podweb/css/source
w niestandardowym tematu i dostosuj tam style. Zarejestruj ten plik, dodając go do_extend.less
pliku w katalogu motywów.Co jeśli chcesz rozszerzyć style modułu, np. Moduł kasy, możesz utworzyć
_extend.less
plik w folderze modułu motywów, np.Magento_Checkout/web/css/source/_extend.less
I dodać / rozszerzyć styl modułu w nim.Teraz, jeśli dodałem
_module.less
plik do katalogu modułuMagento_Checkout/web/css/source/_module.less
, zamierzam zastąpić styl motywów nadrzędnych dla tego modułu, w takim przypadku muszę skopiować_module.less
plik z katalogu modułu motywu nadrzędnego i dokonać modyfikacji tego pliku, w którym to przypadku plik ten będzie_module.less
całkowicie zamień plik motywów nadrzędnych .źródło
Znak „
_extends.less
S” na końcu w pustym motywie to plik, w którym utworzono wszystkie klasy, które można rozszerzyćLESS
w ramach motywu, bez potrzeby tworzenia nowych komponentów lub struktury modułowej w celu zmiany stylu. -> Dla tych, którzy mi nie wierzą: https://github.com/magento/magento2/blob/2.3-develop/app/design/frontend/Magento/blank/web/css/source/_extends.less sprawdź plik._extend.less
Bez S na końcu, jest, kiedy jesteś 99% zadowolony z tego, co rodzic ma tematu i po prostu trzeba zmienić kilka rzeczy, zmienić trochę stylizacji i to wszystko.Co do tego drugiego, moja osobista opinia, nie używaj go do własnego rozwoju. Później tworzy wielki bałagan. Zachowaj modułowość swojej struktury
_module.less
dla każdego modułu, który chcesz dostosować, a na końcu uzyskasz lepszy wynik i łatwiejszy do utrzymania projekt.źródło