Comment créer un thème d'administration pour Magento2

Réponses:

12

Le processus est assez similaire à la création d'un thème pour le frontend.

1. Créez theme.xml dans

app/design/adminhtml/<yourpackage>/<yourtheme>/theme.xml

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
    <title>Magento 2 backend</title>
    <parent>Magento/backend</parent> // set parent theme
 </theme>

2. Enregistrez le thème dans

app/design/adminhtml/<yourpackage>/<yourtheme>/registration.php

3. Activez le thème.

you can enable frontend theme in admin, but for backend you need to enable the theme through di.xml 

dans app/code/Magento/Theme/etc/di.xml, vous pouvez trouver un bloc de code ci-dessous. ajoutez ce bloc de code à votre module et remplacez adminhtml par votre package d'administration et le nom du thème.

    <type name="Magento\Theme\Model\View\Design">
       <arguments>
          <argument name="themes" xsi:type="array">
            <item name="frontend" xsi:type="string">Magento/luma</item>
            <item name="adminhtml" xsi:type="string">Magento/backend</item>
         </argument>
      </arguments>
    </type>

Maintenant, vous pouvez remplacer quelque chose dans votre thème d'administration pour voir si cela fonctionne.

user1506075
la source
merci, très utile!
LucScu
2
étape 3 améliorée ici magento.stackexchange.com/a/120960/23344
LucScu
1
après l'installation: statique-contenu: déployer rien n'est créé sur mon nouveau thème adminhtml, qu'est-ce qui me manque? J'essaye plusieurs config sur le composer.json mais ne crée toujours rien sous le contenu statique. Toute suggestion?
AleGrinGo
2
Mon thème d'administration personnalisé n'a pas de fichiers statiques générés après l'exécutionsetup:static-content:deploy
Vasilii Burlacu
moi aussi! comment le résolvez-vous?
LucScu
2

Le système de thème a un peu changé dans Magento 2 mais il y a des similitudes.
Vous devez d'abord créer un dossier de thèmes dans app/design/frontend. La structure des dossiers est similaire à la structure des modules. Vous devez avoir un nom de fournisseur (dans Magento 1 était appelé package) et un dossier de thème.

Alors créez app/design/frontend/Vendor/theme.
Ensuite, vous devez déclarer votre thème.
vous devez créer dans votre dossier de thème un fichier theme.xmlavec le contenu suivant:

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Config/etc/theme.xsd">
    <title>Your theme name</title>
    <parent>Magento/blank</parent><!-- or any other parent theme similar to Magento 1.9 -->
    <media>
        <preview_image>media/preview.jpg</preview_image>
    </media>
</theme>

puis créez une image d'aperçu de votre thème à l'intérieur de votre thème dans le mediadossier (créez-le également) et appelez l'image d'aperçu preview.jpg(comme déclaré dans le XML ci-dessus).

Maintenant, votre thème est défini.
Si vous voulez changer quelque chose du thème parent, tout ce que vous avez à faire est de copier le fichier que vous voulez changer (mise en page, modèle) dans votre thème depuis le module spécifique et faites votre magie.

Par exemple , si vous voulez changer la façon que la vue du produit ressemble la page comme copier le fichier app/code/Magento/Catalog/view/frontend/layout/catalog_product_view.xmlà app/design/frontend/Vendor/theme/Magento_Catalog/layout/catalog_product_view.xmlmodifier ce qui vous avez besoin.

Plus de détails sur la création d'un thème peuvent être trouvés ici .
J'ai également trouvé un exemple de thème que vous pouvez utiliser comme ligne directrice .
Vous pouvez également installer les exemples de données officiels et vous obtiendrez un thème appelé lumaoù vous pouvez voir la structure des dossiers.

Marius
la source
Merci pour votre réponse! Mais je pense que je dois traduire mon mauvais, désolé.
Mathieu
Je veux remplacer le thème backend (thème admin), pas le frontend.
Mathieu
Ce n'est pas un problème. Les étapes sont les mêmes, mais au lieu d'être frontendutilisées adminhtmldans la structure des dossiers. Le principe est le même.
Marius
OK merci. Mais, je ne comprends pas comment déclarer le nouveau thème pour l'administrateur. Y a-t-il: "app / code / Magento / Backend / etc / config.xml"?
Mathieu
<stores> <admin> <design> <package> <name> default </name> </package> <theme> <default> backend </default> </theme> </design> </admin> </ stores >
Mathieu
2

Dans le cas où quelqu'un a des problèmes avec la génération de fichiers statiques pour le thème d'administration nouvellement créé. Pour que magento génère des fichiers pour le thème backend lors de la configuration: static-content: deploy, le app/design/adminhtml/<yourpackage>/<yourtheme>/web/ dossier doit contenir des fichiers. N'importe quel fichier factice ferait l'affaire.

drevidchuck
la source
J'ai créé un fichier main.css vierge dans un dossier Web et je ne reçois toujours aucun fichier statique créé
Scott
@Scott Avez-vous également effectué toutes les étapes requises que Marius a suggérées dans sa réponse? Et à quoi ressemble exactement le chemin relatif vers main.css dans votre occasion?
drevidchuck