Magento 2: come posso distribuire solo il mio tema


33

Lo stavo usando per distribuire il contenuto, ma ci vuole troppo tempo.

php bin/magento setup:static-content:deploy 

poi ho capito che l'aggiunta della lingua rende veloce ma continua a distribuire tutti i temi.

php bin/magento setup:static-content:deploy  en_US

Come posso deploysolo solo il contenuto del mio tema?


Cordiali saluti, c'è un PR che aggiungerà questa funzionalità e molto altro. Penso che probabilmente uscirà con la v2.2.
thdoan

Un'altra potenziale soluzione, ma per la modalità di produzione magento.stackexchange.com/questions/126270/…

Sto usando Magento 2.0.4 e sto usando questo <code> php -dmemory_limit = configurazione bin / magento 8G: contenuto statico: deploy --theme Rws / fonddecave en_US de_DE fr_FR </code> Ma l'errore sta arrivando - l'opzione fa non esiste. Qual è il mio errore che qualcuno può aiutare in questo?
Raghwendra Ojha,

Se hai una nuova domanda, chiedila facendo clic sul pulsante Poni domanda . Includi un link a questa domanda se aiuta a fornire un contesto. - Dalla recensione
Shoaib Munir,

1
@DarrenFelton fatto.
Qaisar Satti il

Risposte:


56

A partire dalla versione 2.1.1 è ora possibile distribuire temi specifici o escludere temi:

Distribuire temi specifici:

php bin/magento setup:static-content:deploy --theme Magento/backend --theme Vendor/mytheme

Escludi temi:

php bin/magento setup:static-content:deploy --exclude-theme Magento/luma

inserisci qui la descrizione dell'immagine

Aggiorna queste opzioni sono ora nella documentazione .


non ha funzionato per me, inoltre non ha menzionato in devdocs.magento.com/guides/v2.1/config-guide/cli/… Ci sono solo 2 opzioni.
Adeel Ishfaq,

@AdeelIshfaq Come tante altre cose, non è ancora documentato, ma funziona in 2.1.1. Ho allegato uno screenshot.
Mathew Tinsley,

Presentata una richiesta pull per aggiungere le nuove opzioni alla documentazione: github.com/magento/devdocs/pull/827
Mathew Tinsley,

@MathewTinsley, è possibile distribuire un tema frontend specifico in tutte le lingue e un tema backend specifico solo in una lingua? Non ho bisogno del mio backend in tutte le lingue ..
bpoiss

@bpoiss c'è un --languageparametro ora. Esempio--language en_US
Darren Felton,

25

Temo che non sia possibile distribuire un solo tema con il setup:static-content:deploycomando della console di Magento .

Ho avuto a che fare con lo sviluppo di frontend M2 nelle ultime 2 settimane e posso affermare che il processo di sviluppo è un vero DOLORE! Perderai molto tempo a implementare le modifiche a causa della complessità della minore gerarchia dei file e dei fallback dei temi.

Comunque sono Grunt ormai qui troverai come installarlo, configurarlo e utilizzarlo, con Grunt puoi distribuire e / o ricompilare meno file per un singolo tema.

Quindi questo approccio va bene se sei in modalità "sviluppatore" perché Grunt non distribuisce immagini , caratteri e file javascript in pub/static/...modo che Magento lo faccia la prima volta.

Per attivare la modalità sviluppatore, eseguire:

php bin/magento  deploy:mode:set developer

Se stai cercando un modo per distribuire l'intero contenuto per un singolo tema in productionmi dispiace dire che non è possibile.

A proposito, sono abbastanza sicuro che sarebbe una bella richiesta di funzionalità da fare.

EDIT: Ultime notizie!

Ho trovato un modo per implementare tutte le modifiche un po 'più velocemente:

  • Installa Grunt + configura il tuo tema (uno per ogni lingua)
  • dopo ogni modifica eseguita:
    • grunt exec:{theme_name} // Clean folders and deploy less files
    • grunt less:{theme_name} // Process less files

Voila ora avrai tutte le tue modifiche implementate in Just (¿?) 12 ~ 16 sec, 12 sec è il mio record personale!

EDIT: Breaking News 2!

Confermato! se stai apportando modifiche a un file .less (già distribuito) appena eseguito grunt less:{theme_name}.

Quindi, devi eseguire grunt exec:{theme_name}solo quando:

  • Aggiungi / Rimuovi / Rinomina un *.lessfile
  • Aggiungi / Rimuovi / rinominare un *.jsFils
  • Aggiungi / Rimuovi / Rinomina un *.cssfile
  • Aggiungi / Rimuovi / Rinomina un imagefile
  • Aggiungi Rimuovi requirejs-config.js

Inoltre ho disabile blocks, layoutse full pagecache, in modo che qualsiasi modifica a modelli e / o layout xml verrà visualizzato automaticamente.


puoi guidarmi come fare il cambiamento in css attraverso meno sono bloccato nel topmenu. qualche elemento trovato ma alcuni non lo sono ma lì css è lì .. come .nav-sectionsbambino level0.
Qaisar Satti,

È un argomento molto vasto che ti consiglio di leggere (l'intera) guida ufficiale ( devdocs.magento.com/guides/v2.0/frontend-dev-guide/… ). devi capire tutto lib > module > theme > fallback. Come punto di partenza dai un'occhiata alib/web/css
MauroNigrele,

È possibile consultare la documentazione UI Library nel proprio negozio o qui: magento2-demo.nexcess.net/pub/static/frontend/Magento/luma/... così
MauroNigrele

2
Che dire di quando si modifica un plug-in JS? Ho scoperto che le modifiche non si riflettevano sul sito. Ho dovuto rimuovere il file JS modificato pub/statice redeploy ( setup:static-content:deploy) per mostrare le modifiche.
thdoan

Non sono sicuro del motivo per cui questa è la risposta accettata, quella che segue è molto meglio.
Tisch,

16

In Magento 2 sei in grado di distribuire contenuti temi specifici ed anche escludere temi con questi comandi:

Contenuto Distribuisci temi specifici Con questo comando:

php bin/magento setup:static-content:deploy --theme Vendor/firsttheme --theme Vendor/secondtheme

Escludi temi Con questo comando:

php bin/magento setup:static-content:deploy --exclude-theme Vendor/yourtheme

Se è necessario distribuire contenuto statico per un linguaggio specifico (en_US) ed escludere altri temi e non è necessario minimizzare i file HTML, utilizzare questo comando:

magento setup:static-content:deploy en_US --exclude-theme Vendor/yourtheme --no-html-minify

5

Ecco una scorciatoia per distribuire solo il tuo tema

-a per area

-t per tema

-l per la lingua

php bin/magento setup:static-content:deploy en_US -a frontend -t Magento/luma

fonte


1
Non ci dovrebbe essere un -lprima del en_US?
James Harrington,

2

sembra che ormai sia necessario distribuire manualmente qualsiasi lingua tranne en_US. sto lavorando con 2.0.2 e sviluppo-ramo.


Signore, avete ragione.
dchayka,

1

Per distribuire un tema specifico con una lingua specifica:

php bin/magento setup:static-content:deploy --theme Magento/backend --theme Vendor/mytheme pt_BR


1

Se il tuo magento è in modalità sviluppatore, distribuisci temi specifici usando i comandi seguenti:

Rimuovi contenuto statico

rm -rf pub/static/*                            /*to remove files excluding .htaccess*/

rm -rf var/view_preprocessed/*                 /*to remove files excluding .htaccess*/

E poi

php bin/magento setup:static-content:deploy -f --theme Vendor/theme

O

php bin/magento s:s:d -f --theme Vendor/theme
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.