¿Hay alguna diferencia entre extender un tema usando _module.less
y _extend.less
? ¿Y cuál es la mejor práctica al extender un módulo / tema?
Mi primer pensamiento fue que es mejor usarlo _module.less
al diseñar un nuevo módulo y _extend.less
al extender un módulo. Pero Luma usa _module.less
cuando extiende el tema en blanco para que la teoría se haya ido por la ventana.
La única diferencia que puedo ver entre ellos es que _module.less
se importa antes de la biblioteca receptiva y _theme.less
dónde _extend.less
se importa después de ellos.
Este es el orden en que se importan 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
archivo en su tema con la misma ruta que un archivo en el tema / módulo principal, eso es una anulación. Probablemente pueda verificarlo creando un _module.less en blanco en su tema y ver si se aplican los estilos originales.php bin/magento setup:static-content:deploy
, puede buscarpub/static/frontend/<vendor>/<themeName>/<locale>/css/
ypub/static/frontend/<vendor>/<themeName>/<locale>/<Module_Name>/css/
habrá enlaces simbólicos para archivos * .less a su tema o al tema del módulo / padre del que proviene.Explicación simple o diferencia entre ambos:
_extend.less
es la manera de ampliar / modificar los temas de padres estilos, por ejemplo, usted es feliz con su tema de la matriz Luma y sólo quieren cambiar los estilos de botón en el tema personalizado, todo lo que tiene que hacer es crear un nuevo archivo_buttons_extend.less
bajoweb/css/source
en el tema personalizado y ajustar estilos allí. Registre este archivo agregándolo al_extend.less
archivo dentro de su directorio de temas.¿Qué sucede si desea extender los estilos de un módulo, por ejemplo, el módulo de pago? Bueno, puede crear un
_extend.less
archivo dentro de la carpeta del módulo de temas, por ejemplo,Magento_Checkout/web/css/source/_extend.less
y agregar / extender el estilo del módulo allí.Ahora, si agregué un
_module.less
archivo dentro del directorio de mi módulo,Magento_Checkout/web/css/source/_module.less
tengo la intención de anular el estilo de mis temas principales para este módulo, en cuyo caso necesito copiar_module.less
el archivo ' ' del directorio del módulo de mi tema principal y realizar modificaciones en ese archivo, en cuyo caso este archivo se borrará reemplazar el_module.less
archivo de temas principales por completo.fuente
El
_extends.less
con una S al final dentro del tema en blanco, es un archivo donde crearon todas las clases que se pueden extender a través deLESS
más adelante en el tema, sin la necesidad de crear nuevos componentes o estructura modular de los cambios de estilo. -> Para aquellos que no me creen: https://github.com/magento/magento2/blob/2.3-develop/app/design/frontend/Magento/blank/web/css/source/_extends.less revise el archivo.La
_extend.less
sin la S al final, es para cuando estás 99% feliz con lo que el tema de los padres tiene y sólo tiene que cambiar un par de cosas, cambiar algunos estilo y eso es todo.Sobre este último, mi opinión personal, no lo use para su propio desarrollo. Crea un gran desastre más tarde. Mantenga su estructura modular con
_module.less
cada módulo que desee personalizar y obtendrá un mejor resultado y un proyecto sostenible al final.fuente