Temi per Magento 2 - A partire da zero


27

Alcuni di voi probabilmente leggeranno questo argomento riguardo al tema da zero per Magento 1: Theming - a partire da zero

Mi chiedevo quale sarebbe stata la migliore pratica per sviluppare un tema da zero per Magento 2?

  • Costruisci usando il tema nativo lumao blank? O qualsiasi altra cosa ?
  • Usi qualche estensione per aiutarti a sviluppare il tuo tema?
  • Quali passi segui quando sviluppi un tema da zero?

Sto fornendo alcuni link nella mia risposta, per favore, passaci attraverso, saprai dell'architettura frontend e dello sviluppo di Magento 2.0.
Asheem Patro,

Segui i passaggi dei documenti di Magento devdocs.magento.com/guides/v2.1/frontend-dev-guide/themes/… per creare il tema per il frontend.
Rishabh Rk Rai,

Risposte:


45

TL: DR

Costruisci usando il luma nativo o il tema vuoto? O qualsiasi altra cosa ?

Dipende da te, dichiarare un tema genitore è facoltativo. Se non dichiari un genitore, tornerai comunque ai moduli (ad es. Magento_Catalog) che forniscono file XML e template ma senza stile.

Usi qualche estensione per aiutarti a sviluppare il tuo tema?

Dato che preferisco lavorare con SCSS e GULP ora uso Frontools e il tema SCSS vuoto . Elimina gran parte dello stress derivante dalla gestione del worflow Grunt / LESS predefinito.

Quali passi segui quando sviluppi un tema da zero?

  1. Dichiara il tema
  2. Rimuovi CSS tema principale (se richiesto)
  3. Aggiungi il tuo CSS / LESS / SCSS

La mia opinione personale è che è meglio creare il tuo "tema vuoto" da zero in quanto puoi personalizzare questo per essere esattamente ciò di cui hai bisogno.

Ecco come avrei creato un tema da zero, ho usato NewStore / default come nome del mio fornitore e tema.

Ora per la risposta più dettagliata ...

Crea il tema (come da documenti ufficiali)

Crea il tema secondo i documenti ufficiali

Facoltativamente dichiarando un genitore

All'interno app/design/frontend/NewStore/default/theme.xmlhai la scelta di dichiarare o meno un tema genitore, per questo esempio ho escluso la linea 3 ( <parent>Vendor/theme</parent>), quindi non esiste un tema genitore . Ciò significa che tutti i modelli / file di layout provengono dai moduli stessi e non da quelli vuoti o Luma, e non ci sarà uno stile del tema poiché questo viene aggiunto nel tema vuoto.

Il mio theme.xml è simile al seguente:

<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>

Rimuovi lo stile (se imposti un tema principale) e aggiungi il tuo CSS

Se si imposta vuoto o Luma come genitore, sarà necessario impedire il caricamento dei file CSS. Per fare ciò, crea app/design/frontend/NewStore/default/Magento_Theme/layout/default_head_blocks.xmle aggiungi il seguente XML:

<?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>

Questo rimuove styles-m.css, styles-l.csse print.cssaggiunto dal tema vuoto. Aggiunge inoltre styles.css come base per il proprio CSS.

Se non hai specificato un genitore, puoi rimuovere i 3 <remove />tag nel codice sopra.

Aggiungi il tuo CSS

Ora puoi modellare il tuo tema come preferisci, sono un fan di Sass piuttosto che MENO, quindi ho aggiunto questo file - app/design/frontend/NewStore/default/web/css/styles.scss

Ho cambiato il colore di sfondo qui solo per provare che funziona, idealmente dovresti usare questo file solo per importare altri file Sass / Less.

Risultato

Il risultato di quello che ho appena fatto è un tema senza stile (a parte il mio bellissimo sfondo verde) che consente di modellare il tema senza lavorare con lo stile di Magento (a volte difficile da lavorare).

inserisci qui la descrizione dell'immagine

Suggerimenti

  • Se preferisci lavorare con SCSS e non hai il tempo di creare un tema da zero, ti consiglio di usare Frontools e il tema SCSS in bianco e nero di Snowdog Apps .

  • Trovo l'aspetto più frustrante nel lavorare con il codice front-end di Magento è quanto sia specifico il loro stile, per evitare questo consiglio di usare la convenzione di denominazione BEM quando scrivo il tuo stile.

  • Anche i commenti utili sono fondamentali, se uno sviluppatore abituato a lavorare con Luma / Blank lavorasse su un tema creato da zero probabilmente troverebbe le cose che funzionano in modo molto diverso da quello che si aspettano.


Ho creato il mio tema vuoto usando le tue istruzioni, senza un tema principale definito in theme.xml. Tuttavia, ci sono ancora tutti i tipi di stili visibili nella parte frontale. L'installazione di Magento è in developermodalità e tutte le cache sono state cancellate. Non so da dove vengano tutti questi stili: hai un'idea?
fritzmg

Hai estensioni / plugin installati? Potrebbe anche essere Vernice se installato, per escluderlo aggiungere un punto interrogativo e una stringa casuale dopo l'URL, come ad esempio?=123
Ben Crook,

Sì, ho escluso Varnish (o simile). Non ci sono estensioni o plugin installati.
fritzmg

È lo stile a tema completo o solo parti di esso? È difficile per me dirlo senza vedere il sito e la base di codice. Forse fai una nuova domanda e inserisci alcuni dettagli lì? Se mi tagghi vedrò se riesco a risolverlo.
Ben Crook,

È il tema completo per quanto posso vedere. Inoltre il file CSS incluso dal mio tema. Sì, probabilmente è meglio creare una nuova domanda per questo :)
fritzmg

8

Esistono molti tutorial per iniziare un tema in Magento 2.0. Sto fornendo alcuni collegamenti video e alcuni collegamenti normali in cui è possibile ottenere una buona conoscenza dello sviluppo del tema in Magento 2.0. clicca qui per il video

prendere riferimento anche da questo link

http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/theme-create.html

http://blog.magestore.com/how-to-create-custom-theme-on-magento-2-part-1/

Da questo link imparerai l'architettura frontend di magento 2.0

http://inchoo.net/magento-2/frontend-theme-architecture/

controlla anche questi due link

http://www.webmull.com/magento-2-create-new-custom-theme/

http://www.slideshare.net/Magestorecom/how-to-create-theme-in-magento-2-part-1


5

Eredito dal vuoto ma mi sto muovendo rapidamente verso il tentativo di creare un tema base più leggero che abbia una struttura CSS molto meno complessa.

Vale la pena notare che, nel 2015, Magento è uscito e ha detto che non raccomandano di ereditare da Luma in quanto si riservano il diritto di apportare modifiche senza preavviso per i propri scopi di marketing e demo. Successivamente hanno rivisto tale affermazione dicendo che il loro obiettivo è consentire l'ereditarietà .


3

Il modo migliore per iniziare a sviluppare un tema è iniziare con l'ereditarietà di uno lumao di entrambi blank. Il motivo è dovuto al fatto che sono progettati per essere reattivi (ad es. Multi-risoluzione). Riduce inoltre la quantità di lavoro da svolgere nella creazione dei diversi file modello e definizioni JS / CSS. Tutto quello che devi fare è sostituire solo i pezzi che vuoi personalizzare con i tuoi. Vedi i link qui sotto per le diverse istruzioni su come sviluppare un tema.

Link alla documentazione di Magento:


I file modello ora provengono dai moduli e non da spazi vuoti / luminanza, quindi puoi bypassarli in modo efficace se non hai bisogno di stile / modifiche. Ad esempio, se dai un'occhiata a app / design / frontend / Magento / blank / Magento_Catalog tutto ciò che fa è spostare un elemento e aggiungere un po 'di stile, i modelli provengono da app / codice / Magento / catalogo / vista / frontend / modelli e app / codice / Magento / Catalogo / vista / base / modelli
Ben Crook
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.