TL: DR
Construisez-vous en utilisant le thème natif luma ou vide? Ou autre chose?
Cela dépend de vous, déclarer un thème parent est facultatif. Si vous ne déclarez pas de parent, vous aurez toujours recours aux modules (par exemple Magento_Catalog) qui fournissent des fichiers XML et de modèle mais pas de style.
Utilisez-vous une extension pour vous aider à développer votre thème?
Comme je préfère travailler avec SCSS et GULP, j'utilise maintenant Frontools et le thème vierge SCSS . Il supprime une grande partie du stress lié au traitement du flux de travail Grunt / LESS par défaut.
Quelles étapes suivez-vous lors du développement d'un thème à partir de zéro?
- Déclarez le thème
- Supprimer le thème CSS parent (si nécessaire)
- Ajoutez votre propre CSS / LESS / SCSS
Mon opinion personnelle est qu'il est préférable de créer votre propre "thème vierge" à partir de zéro car vous pouvez l'adapter exactement à ce dont vous avez besoin.
C'est ainsi que je créerais un thème à partir de zéro, j'ai utilisé NewStore / default comme nom de fournisseur et de thème.
Maintenant, pour la réponse plus détaillée ...
Créez le thème (selon les documents officiels)
Créez le thème selon les documents officiels
Déclaration facultative d'un parent
En app/design/frontend/NewStore/default/theme.xml
vous, vous avez le choix de déclarer un thème parent ou non, pour cet exemple, j'ai omis la ligne 3 ( <parent>Vendor/theme</parent>
) donc il n'y a pas de thème parent . Cela signifie que tous les modèles / fichiers de mise en page proviendront des modules eux-mêmes et non de Blank ou Luma, et il n'y aura pas de style de thème car cela est ajouté dans le thème vierge.
Mon theme.xml ressemble à ceci:
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>NewStore default</title>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
</theme>
Supprimez le style (si vous définissez un thème parent) et ajoutez votre propre CSS
Si vous définissez vide ou Luma en tant que parent, vous devrez empêcher le chargement des fichiers CSS. Pour ce faire, créez app/design/frontend/NewStore/default/Magento_Theme/layout/default_head_blocks.xml
et ajoutez le XML suivant:
<?xml version="1.0" ?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<!-- Remove blank/luma theme styling if you declared a parent -->
<remove src="css/styles-m.css" />
<remove src="css/styles-l.css" />
<remove src="css/print.css" />
<!-- Add your own CSS files -->
<css src="css/styles.css" />
</head>
</page>
Cela supprime styles-m.css
, styles-l.css
et print.css
ajouté par le thème de vide. Il ajoute également styles.css comme base pour votre propre CSS.
Si vous n'avez pas spécifié de parent, vous pouvez supprimer les 3 <remove />
balises dans le code ci-dessus.
Ajoutez votre propre CSS
Vous pouvez maintenant personnaliser votre thème comme bon vous semble, je suis un fan de Sass plutôt que de LESS, j'ai donc ajouté ce fichier - app/design/frontend/NewStore/default/web/css/styles.scss
J'ai changé la couleur d'arrière-plan ici juste pour prouver que cela fonctionne, idéalement vous n'utiliseriez ce fichier que pour importer d'autres fichiers Sass / Less.
Résultat
Le résultat de ce que je viens de faire est un thème sans style (à part mon beau fond vert) vous permettant de styliser votre thème sans travailler avec le style de Magento (parfois difficile à travailler).
Conseils
Si vous préférez travailler avec SCSS et que vous n'avez pas le temps de créer un thème à partir de zéro, je recommande d'utiliser Frontools et le thème vierge SCSS à la fois par Snowdog Apps .
Je trouve que l'aspect le plus frustrant de travailler avec le code frontal de Magento est la spécificité de leur style.Pour éviter cela, je recommande d'utiliser la convention de dénomination BEM lors de l'écriture de votre propre style.
Des commentaires utiles sont également essentiels, si un développeur habitué à travailler avec Luma / Blank travaillait sur un thème construit à partir de zéro, il trouverait probablement que les choses fonctionnent assez différemment de ce à quoi il s'attend.