Come creare un tema figlio in Magento 2


18

Voglio modificare alcuni aspetti del tema Luma out-of-the-box, ma vorrei farlo preservando i file originali e assicurandomi che ogni volta che aggiorno Magento conservo anche le mie modifiche.

Voglio farlo tramite un tema per bambini.

Magento 2 supporta i temi figlio e, in tal caso, come strutturare il mio percorso di directory affinché ciò accada?


1
Sono grato che tu abbia posto questa domanda. Mi chiedevo la stessa cosa!
Camdixon,

Risposte:


26

Ci permette di creare un tema figlio in modo che tutti i nostri temi personalizzati in Magento 2 vadano qui:

app / design / frontend / company_name / theme_name

Supponiamo che il nome della nostra azienda sia mycompany e il nome del nostro tema sia di base. Dobbiamo creare la seguente struttura di directory per il nostro tema:

app
└────design
     └──────frontend
            └──mycompany
               └───basic
                   └──etc
                   └──Magento_Theme
                          └─layout
                                default.xml
                   └──media
                          preview.png
                   └──web
                     └─css
                     └─fonts
                     └─images
                     └─js
                    theme.xml
                    registration.php

la mia compagnia :-

Il nome del pacchetto temi

di base: - Il nome del tema. Possiamo avere più temi con nome all'interno della cartella mycompany.

etc / view.xml: -

Questo file viene utilizzato per specificare le dimensioni dell'immagine del prodotto, le miniature ecc.

Magento_Theme: - Questa directory viene utilizzata per sovrascrivere i file dei temi di Magento esistenti.

Magento_Theme / layout / default.xml: - Per impostazione predefinita Magento2 presuppone che il file del logo del tema debba essere: /web/media/logo.svg Se si desidera un altro file per il logo, è necessario dichiararlo nel default.xmlfile.

Questo file viene utilizzato anche per sovrascrivere le impostazioni del tema predefinito.

media / preview.png: - L'anteprima del tema corrente.

web: - Questa directory contiene tutti i dati statici del tema come immagini, stili, javascript, caratteri ecc.

registration.php: - Questo file è necessario per registrare il nostro tema sul sistema Magento2.

theme.xml: - Questo è un file obbligatorio che definisce il nome del nostro tema, il suo genitore e facoltativamente l'immagine di anteprima del tema.

Creazione di file di temi

Ora creiamo i nostri file uno per uno.

theme.xml (app / design / frontend / mycompany / basic / theme.xml)

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
   <title>Basic</title> <!-- your theme's name -->
   <parent>Magento/blank</parent> <!-- the parent theme -->
   <media>
        <preview_image>media/preview.jpg</preview_image> <!-- theme's preview image -->
   </media>
</theme>

registration.php (app / design / frontend / mycompany / basic / registration.php)

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::THEME,
    'frontend/mycompany/basic',
    __DIR__
);

default.xml (app / design / frontend / mycompany / basic / Magento_Theme / layout / default.xml)

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="logo">
           <arguments>
              <argument name="logo_file" xsi:type="string">images/my_logo.png</argument>
              <argument name="logo_img_width" xsi:type="number">200</argument>
              <argument name="logo_img_height" xsi:type="number">200</argument>
           </arguments>
        </referenceBlock>
    </body>
</page>

A questo punto, il nostro tema è pronto. Svuota la cache e ora selezioneremo il nostro nuovo tema da admin.

Ora, accedi all'amministratore e passa al seguente percorso:

Content -> Design -> Themes

Dovresti vedere il tuo tema elencato.

Ora vai a:

Stores -> Configuration -> Design

Scegli il sito Web principale davanti alla vista dello store in alto a sinistra. Ora fai clic

Desgin -> Design Theme

Deseleziona Usa la casella di controllo Predefinita e scegli il tema. Fai clic su Salva configurazione, cancella la cache e il nuovo tema è pronto. Controlla la tua home page.

Per maggiori dettagli vedi qui.


Grazie per l'ampia guida passo-passo @Arunendra. Proverò a breve e rispedirò.
H. Ferrence

Questo è eccellente @Arunendra. Ha funzionato perfettamente. Devo solo seguirlo completamente senza saltare alcun passaggio.
H. Ferrence,

1
Grande passo dopo passo @Arunendra. Nel caso in cui qualcuno incontri gli stessi miei problemi, la posizione in cui applichi il tema registrato è cambiata da Design -> Design Themea Content/Design/Configuration.
Kedmasterk

Nota importante: il file media/preview.pngdeve esistere altrimenti Magento genererà un'eccezione.
Salman von Abbas,

5

Crea directory:

Vai a root nella directory principale e vai all'app / design / frontend , crea la directory Demo .

Ora crea la directory Mytheme in app / design / frontend / Demo.

Crea la directory Mangento_Theme in app / design / frontend / Demo / Mytheme.

Crea una directory di layout in app / design / frontend / Demo / Mytheme / Magento_Theme.

Crea una directory multimediale in app / design / frontend / Demo / Mytheme.

Crea una directory web in app / design / frontend / Demo / Mytheme.

Creare directory di immagini in app / design / frontend / Demo / Mytheme / web.

Dichiarazione del tema

Crea il file theme.xml in app / design / frontend / Demo / Mytheme e incolla il seguente codice:

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>Mytheme</title>
<parent>Magento/blank</parent>
<media>
<preview_image>media/preview.jpg</preview_image>
</media>
</theme>

Registrazione del tema

Ora crea il file registration.php in app / design / frontend / Demo / Mytheme e incolla il seguente codice:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME, 'frontend/Demo/Mytheme', __DIR__
);

Carica immagine di anteprima del tema

Vai su app / design / frontend / Demo / Mytheme / media e carica la tua immagine di anteprima (preview.jpg) qui.

Dichiarazione del logo del tema

Vai su app / design / frontend / Demo / Mytheme / Magento_Theme / layout e crea un file default.xml. Incolla il seguente codice:

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="logo">
<arguments>
<argument name="logo_file" xsi:type="string">images/mytheme-logo.png</argument>
<argument name="logo_img_width" xsi:type="number">200</argument>
<argument name="logo_img_height" xsi:type="number">200</argument>
</arguments>
</referenceBlock>
</body>
</page>

Carica il logo del tema

Vai su app / design / frontend / Demo / Mytheme / web / images e carica il tuo logo (mytheme-logo.png) qui.

Applica il tuo tema

  • Apri il pannello di amministrazione di Magento 2 e vai su Contenuto → Configurazione.

  • Fai clic sull'opzione Modifica.

  • Seleziona Mytheme dal menu a discesa Tema applicato e fai clic su
    Salva configurazione.

Esegui comandi

Apri il terminale SSH e vai alla directory principale di Magento 2. Ora esegui tutti questi comandi uno per uno:

rm -rf var/di/* var/generation/* var/cache/* var/log/* var/page_cache/* var/session/* var/view_preprocessed/* pub/static/*
php bin/magento setup:upgrade
php bin/magento setup:db-schema:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento indexer:reindex
php bin/magento cache:clean
php bin/magento cache:flush
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.