Il parametro richiesto 'theme_dir' non è stato passato


Risposte:


87

Nel caso in cui si rimuova il tema direttamente (non in modo Magento).

Quindi seguire questi passaggi.

PASSAGGIO 1: Operazioni sui file

Elimina il contenuto da app/design/frontend/<Vendor>(assicurati di eseguire prima il backup).

Elimina tutto il contenuto della cartella var/view_preprocessed& pub/static/frontend.

PASSAGGIO 2: Operazioni DB

Vai alla tua themetabella ed elimina la voce per il tema creato.

Dopo di che...

Vai alla tua core_config_datatabella e cerca themee otterrai record di percorso come design/theme/theme_idsostituire l'id del tema predefinito in esso.

PASSAGGIO 3: svuotare la cache

Svuota la cache php bin/magento cache:flush

Fammi sapere se hai ancora problemi dopo.


Grazie. Ho avuto lo stesso problema quando ho eliminato un tema. Non dimenticare di eliminare i resti rimasti nel database. Ho corretto la themetabella, ma ho dimenticato il core_config_datavalore.
Giel Berkers,

@GielBerkers: Benvenuti :)
Kaushal Suthar,

@KaushalSuthar questo non ha funzionato affatto invece l'amministratore è andato in formato testo. Quindi dopo aver eseguito setup:static-content:deployadmin è tornato all'interfaccia utente.
Ashwani Shukla,

@AshwaniShukla: potresti aver fatto qualche errore durante il processo ...
Kaushal Suthar

@KaushalSuthar l'unico errore che ho fatto è pub/static/.htaccessstato non c'era. grazie
Ashwani Shukla,

28

Questo messaggio di errore indica che è stato configurato un tema che non esiste più nel file system.

Può essere facilmente risolto selezionando invece un tema valido. Vai a Contenuto -> Configurazione , seleziona l'ambito (globale, sito Web, store_view) e cambia il tema. Dopo averlo fatto, dovresti rimuoverlo anche da Contenuto -> Temi .

cambia tema per il negozio

Riferimenti


Questo può succedere anche se la tua directory dei temi non dispone delle autorizzazioni appropriate.
Nathan Moinvaziri,

Le autorizzazioni dovrebbero essere verificate da alcuni degli script Magento AFAIK, ma hai ragione, questo si qualifica come lo stesso: una directory inaccessibile spesso si comporta in modo simile a una directory inesistente.
Hacre,

3
Questo non è più il luogo in cui si trova. è nella scheda contenuto ora.
CarComp

@CarComp: sentiti libero di fornire uno screenshot aggiornato e modificare la risposta. Quando ho risposto, era come documentato.
Hacre,

11

Nel mio caso ho eliminato un tema figlio dalla directory del fornitore. Ma la voce DB era ancora lì nella themetabella. Quindi vai alla themetabella ed elimina il record che punta al tema eliminato.


Come hai cancellato dalla directory del fornitore? Con il compositore di composer remove vendor/theme?
Hacre,

No, solorm -rf vendor/theme
Arvind07

7

Assicurarsi che la themevoce della tabella e la magento\app\design\frontend\<Vendor>voce siano uguali.

Altrimenti causa questo problema.

Rimuovi il tema non necessario tramite Admin -> Contenuto -> Design -> Temi . Cancellalo. Quindi rimuoverà anche la voce DB.

Se rimuovi solo la cartella, non funzionerà


7

Questo problema può verificarsi anche in uno stato emulato, ad esempio in un comando CLI. Ho avuto una situazione in cui non riuscivo a inviare un'e-mail nella CLI, perché il comando wrapping era in esecuzione in uno stato emulato:

$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
    // In this section the email was sent
});

Nell'esempio sopra, quando l'e-mail stava provando a determinare la sua directory modello, sarebbe mappata a global/Magento/backend, che è inesistente. Per risolvere questo problema, ho dovuto aggiungerlo manualmente nel mio costruttore:

/** @var \Magento\Framework\Component\ComponentRegistrarInterface $componentRegistrar */
// Make the admin theme global accessible for sending e-mails:
\Magento\Framework\Component\ComponentRegistrar::register(
    'theme',
    'global/Magento/backend',
    $componentRegistrar->getPath('theme', 'adminhtml/Magento/backend')
);

Dopo questa correzione, il problema è stato risolto e ho potuto inviare l'e-mail.

Aggiornare:

Quando si tratta di inviare posta utilizzando l'interfaccia della riga di comando, un approccio più appropriato sarebbe quello di utilizzare l'emulazione. Per esempio:

/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
    'frontend',
    [$this->accountManagement, 'initiatePasswordReset'],
    [
        $customer->getEmail(),
        AccountManagement::EMAIL_REMINDER,
        $customer->getWebsiteId()
    ]
);

In questo modo non devi affrontare i tuoi piccoli hack sporchi.


Grazie per aver condiviso questo approfondimento. Questa risposta diventa piuttosto una FAQ da sola, molto bella da vedere.
Hakre,

4

correre sql UPDATE core_config_data SET value=NULL WHERE path='design/theme/theme_id'

quindi deselezionare le pub/static/frontend, var/view_preprocessing, var/cache, var/page_cachele directory.


1

@hakre è corretto. Ho avuto lo stesso errore Required parameter 'theme_dir' was not passed. Di seguito spiego cosa ho fatto per causare l'errore:

Ho creato un tema nella directory app / design / frontend / MyVendorTheme2 / myThemeName2 e poi l'ho configurato selezionando il tema " MyVendorTheme2 - myThemeName2 " nel browser di amministrazione di Magento 2 ( Store> Configurazione> IMPOSTAZIONI TEMA> GENERALE> Design> Tema di progettazione ) . Ma poi ho deciso di spostare la directory " myThemeName2 " (contenente il mio nuovo tema) in una cartella del fornitore (esistente) diversa " MyVendorTheme1 " app / design / frontend / MyVendorTheme1 / myThemeName2 , e rimossa dalla cartella " MyVendorTheme2 " dove era prima. Ho proceduto alla compilazione di risorse (ad es grunt clean. grunt exec:myThemeName2,grunt less:myThemeName2), quindi ho aperto il browser nel mio sottodominio del tema (ovvero http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ).

Inizialmente ho ricevuto un errore non specificato: There has been an error processing your request Exception printing is disabled by default for security reasons. Error log record number:

Ho abilitato la segnalazione degli errori rinominando pub/errors/local.xml.samplein local.xmle aggiornato la pagina. Mi è stato quindi presentato l'errore Required parameter 'theme_dir' was not passed.

Ho risolto l'errore tornando nel mio browser di amministrazione Magento 2 ( Negozi> Configurazione> IMPOSTAZIONI TEMA> GENERALE> Design> Tema di progettazione ), che aveva selezionato il mio tema di progettazione precedente e ora non valido, quindi ho scelto quello corretto.


Ottengo questo errore solo quando aggiungo 'cache' per la configurazione di redis in env.php. Rimuovi le modifiche e funziona correttamente. Quindi perché è solo quando si aggiunge 'cache'? Ho controllato la sintassi dell'array e va bene. Lo stesso valore cache => sta funzionando sul mio server di gestione temporanea (tagliato / incollato)
Scott

1

Questo errore mi è successo durante il salvataggio delle immagini dei prodotti dopo l'installazione di un tema personalizzato.

Avevo il tema personalizzato impostato come tipo virtuale, ovvero nel DB nella tabella dei temi, tipo = 1. Nel mio caso non utilizzavo più il tema, quindi l'ho eliminato dalla tabella.


1

1 - Utilizzare il comando seguente per identificare i temi nel pannello di amministrazione.

n98-magerun2 dev:theme:list

2 - Esegui il comando per identificare i temi installati:

ls -lha app/design/frontend/MyThemePackage/

3- Eseguire questi comandi di seguito per creare il tema che non esiste:

n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName

0

Se nulla ha funzionato, non dimenticare di controllare la sezione delle categorie. Ci sono anche impostazioni di progettazione. Assicurarsi che sia assegnato il tema di progettazione corretto. Nel mio caso, ho riscontrato l'errore solo su alcune categorie.


Potresti fornire uno scenario di esempio in cui potrebbe verificarsi questo problema? L'unico che mi viene in mente è se il layout è stato modificato in un'opzione che esiste solo all'interno di un tema personalizzato, quindi il tema viene rimosso. Ma se ciò dovesse accadere usando solo layout predefiniti (o versioni modificate dei valori predefiniti, usando lo stesso nome), ciò implicherebbe sicuramente un difetto con il tema personalizzato e non con il software magento stesso?
Inondazione di Giosuè il

0

Quando aggiungi o modifichi un prodotto, vai alla sezione Progettazione e cambia l'opzione di layout.

inserisci qui la descrizione dell'immagine


0

È possibile rimuovere direttamente il tema non utilizzato dal DB eseguendo questa query di seguito:

delete from theme where theme_path in ('unusedtheme');

whene unusedtheme è il tema inutilizzato e dopo aver cancellato la cache


0

Ho avuto questo problema quando ho rimosso per sbaglio la cartella app / desing / adminhtml / nome-tema. Riportarlo ha risolto il mio problema. Inoltre, si è verificato solo quando ho provato ad accedere al Pannello di amministrazione.


0

In alcuni casi si elimina il tema personalizzato in modo corretto, quindi si dovrà affrontare anche questo errore. In questa situazione:

1) you have to delete that entry/row from 'theme' table.
2) set value 1 (1 for blank theme 2 for Luma what ever you want to set) against 'design/theme/theme_id'

Aggiorna l'errore della pagina sparito.


0

Ho risolto il problema. Nel mio caso il problema non era Magento2 ma un'operazione sbagliata che ho fatto tempo fa come segue: ho creato un tema creando il relativo percorso in app / design / frontend / MyFolder / MyTheme e registrato come spiegato nella documentazione online di Magento 2. Quindi ho deciso di annullare il tema e invece di utilizzare il comando appropriato: bin / magento theme: disinstallare frontend / MyFolder / MyTheme Ho eliminato direttamente le cartelle. Questa non è una buona operazione poiché il database non viene aggiornato con le informazioni dovute. Soluzione: con un editor di database come phpmyadmin, eliminare il record nella tabella "Tema" corrispondente alle cartelle eliminate. Spero che questo possa aiutare!


0

So che questa domanda è piuttosto vecchia, ma dal momento che mi sono imbattuto in questo proprio oggi e ho scoperto rapidamente quale fosse il mio problema, ho deciso di pubblicare la mia risposta come promemoria per tutti coloro che, come me, usano PhpStorm per lavorare con Magento: ricordati di controllare i tuoi file quando cambi ramo.

Nel mio caso, il ramo su cui stavo lavorando non aveva i file dei temi richiesti (sono stati nascosti da PhpStorm quando sono passato dal ramo del tema al ramo principale) perché non sono stati ancora uniti su di esso, quindi il errore.

Spero che questo possa aiutare qualcuno.


-1

elimina tutti i file temporanei del tema che non utilizza sul sito Web ed elimina anche dal tema che non utilizza ed esegui 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.