Existe-t-il une différence entre l'extension d'un thème à l'aide de _module.less
et _extend.less
? Et quelle est la meilleure pratique lors de l'extension d'un module / thème?
Ma première pensée a été qu'il était préférable de l'utiliser _module.less
lors de la création d'un nouveau module et _extend.less
lors de l'extension d'un module. Mais Luma utilise _module.less
pour étendre le thème vide de sorte que la théorie a disparu.
La seule différence que je peux voir entre eux est _module.less
importée avant la bibliothèque réactive et _theme.less
où as _extend.less
est importée après eux.
C'est l'ordre dans lequel ils sont importés 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
fichier dans son thème avec le même chemin d'accès qu'un fichier dans le thème / module parent, c'est un remplacement. Vous pouvez probablement vérifier en créant un _module.less vide dans votre thème et en vérifiant si les styles originaux s'appliquent.php bin/magento setup:static-content:deploy
, vous pouvez regarderpub/static/frontend/<vendor>/<themeName>/<locale>/css/
etpub/static/frontend/<vendor>/<themeName>/<locale>/<Module_Name>/css/
il y aura des liens symboliques pour les fichiers * .less vers votre thème, ou le module / thème parent dont il provient.Explication simple ou différence entre les deux:
_extend.less
est le moyen d'étendre / de modifier les styles de thèmes parents par exemple, vous êtes satisfait de votre thème parent Luma et vous voulez juste changer les styles de bouton dans votre thème personnalisé, tout ce que vous avez à faire est de créer un nouveau fichier_buttons_extend.less
sousweb/css/source
dans votre thème personnalisé et ajuster les styles là-dedans. Enregistrez ce fichier en l'ajoutant au_extend.less
fichier dans votre répertoire de thèmes.Et si vous souhaitez étendre les styles d'un module, par exemple le module de paiement, vous pouvez créer un
_extend.less
fichier dans le dossier de votre module de thèmes, par exemple,Magento_Checkout/web/css/source/_extend.less
et y ajouter / étendre le style du module.Maintenant, si j'ai ajouté un
_module.less
fichier dans le répertoire de mon module,Magento_Checkout/web/css/source/_module.less
j'ai l'intention de remplacer le style de mes thèmes parents pour ce module, auquel cas je dois copier_module.less
le fichier ' ' du répertoire de module de mon thème parent et apporter des modifications à ce fichier, auquel cas ce fichier sera remplacer_module.less
complètement le fichier des thèmes parents .la source
Le
_extends.less
avec un S à la fin dans le thème vide, est un fichier où ils ont créé toutes les classes qui peuvent être étendues viaLESS
plus tard dans le thème, sans avoir besoin de créer de nouveaux composants ou une structure modulaire pour les changements de style. -> Pour ceux qui ne me croient pas: https://github.com/magento/magento2/blob/2.3-develop/app/design/frontend/Magento/blank/web/css/source/_extends.less vérifier la fichier.Le
_extend.less
sans le S à la fin, c'est pour quand vous êtes à 99% satisfait de ce que le thème parent a et vous avez juste besoin de changer quelques choses, changer un peu de style et c'est tout.À propos de ce dernier, mon opinion personnelle, ne l'utilisez pas pour votre propre développement. Cela crée un gros gâchis plus tard. Gardez votre structure modulaire avec
_module.less
pour chaque module que vous souhaitez personnaliser et vous obtiendrez un meilleur résultat et un projet maintenable à la fin.la source