La conferma della posta dell'ordine genera un errore DOMXPath :: query ()


12

al momento dell'ordine l'email contiene il seguente errore e non viene visualizzata correttamente

CSS Inline Error: Warning: DOMXPath::query(): Invalid expression in .../vendor/pelago/emogrifier/Classes/Emogrifier.php on line 269 

Come posso risolvere questo problema?


Qualsiasi aggiornamento su questo problema
Jordy S Chemparathy

anche io
sto

Risposte:


5

Potrebbe trattarsi di un bug del modulo Emogrifier .

Metti questo nella require-devparte di composer.json:

"pelago/emogrifier": "1.0.0 as 0.1.1"

O preferisci la versione di sviluppo:

"pelago/emogrifier": "dev-master as 0.1.1"

C'è un avviso: sembra che questo problema si verifichi anche durante l'elaborazione della distribuzione di contenuto statico.

AGGIORNARE:

Dovremmo dare un'occhiata:

vendor / Magento / theme-frontend-vuoto / web / css / email.less

@import 'source/lib/_lib.less'; // Global lib
@import 'source/lib/variables/_email.less'; // Global email variables
@import 'source/_theme.less'; // Global variables override
@import 'source/_variables.less'; // Local theme variables
@import 'source/_email-variables.less'; // Theme variables for emails

L'email Magento importerà alcuni file in meno . Quindi, se abbiamo aggiunto alcuni selettori non supportati a questi file, ciò potrebbe causare questo problema.

vendor / Magento / theme-frontend-vuoto / web / css / source / _email-base.less

Unsupported selectors (examples in parenthesis):
      * first-child (div:first-child)
      * last-child (div:last-child)
      * nth-child (div:nth-child(3n+1))
      * universal (*)
      * pseudo (a:hover, a:active, a:focus, span:before, span:after, etc)

Ad esempio, nel nostro tema personalizzato, aggiungiamo alcuni selettori non supportati:

app / design / frontend / VendorTheme / default / web / css / source / _theme.less

...
#customer-service-menu li.item:nth-child(2) {position: absolute;}
...

Questo problema si ripresenterà.

SOLUZIONE:

Dovremmo creare una nuova cartella che contiene i file stand less per i nostri stili e-mail . E questi file sono solo per e-mail.

app / design / frontend / VendorTheme / default / web / css / email.less

@import 'source/lib/email/stand/_lib.less'; // Global lib
@import 'source/lib/email/stand/variables/_email.less'; // Global email variables

[UnexpectedValueException] Impossibile analizzare il vincolo di versione come 0.1.1: stringa di versione non valida "as 0.1.1"
Pratik Mehta

2

Di recente sono venuto da un problema simile. Spero che questi cambiamenti possano aiutarti.

trovato una soluzione per Magento 2

creato i file

/web/css/email.less

e

/web/css/email-inline.less

nel mio tema personalizzato e aggiunto il contenuto di

/vendor/magento/theme-frontend-blank/web/css/email.less

e

/vendor/magento/theme-frontend-blank/web/css/email-inline.css rispettivamente

Nota di seguito

ma ognuno con la riga "@import 'source / _theme.less';" commentato (o rimosso)


In questo modo stai separando il tema css dall'email css giusto?
Rohit Kaushik il

In questo modo stai separando il tema css dall'email css giusto? ==> sì, spero che questa soluzione ti sia stata utile
Nikunj Panchal,

1

Utilizzando Magento 2.2.2 e riscontrando lo stesso errore e risolto in questo modo:

"pelago/emogrifier": "2.0.0 as 1.2.0" come requisito in composer.json
composer update pelago/emogifier && magento setup:upgrade


-1

Ora ho la soluzione
/var/www/html/vendor/pelago/emogrifier/Classes/Emogrifier.php
Line 595, trova e sostituisci sotto la funzione

private function splitCssAndMediaQuery($css)
    {
        $media = '';

        $css = preg_replace_callback(
            '#@media\\s+(?:only\\s)?(?:[\\s{\\(]|screen|all)\\s?[^{]+{.*}\\s*}\\s*#misU',
            function ($matches) use (&$media) {
                $media .= $matches[0];
            },
            $css
        );

        // filter the CSS
        $search = array(
            // get rid of css comment code
            '/\\/\\*.*\\*\\//sU',
            // strip out any import directives
            '/^\\s*@import\\s[^;]+;/misU',
            // strip remains media enclosures
            '/^\\s*@media\\s[^{]+{(.*)}\\s*}\\s/misU',          
        );

        $replace = array(
            '',
            '',
            '',         
        );

sostituire

private function splitCssAndMediaQuery($css)
    {
        $media = '';

        $css = preg_replace_callback(
            '#@media\\s+(?:only\\s)?(?:[\\s{\\(]|screen|all)\\s?[^{]+{.*}\\s*}\\s*#misU',
            function ($matches) use (&$media) {
                $media .= $matches[0];
            },
            $css
        );

        // filter the CSS
        $search = array(
            // get rid of css comment code
            '/\\/\\*.*\\*\\//sU',
            // strip out any import directives
            '/^\\s*@import\\s[^;]+;/misU',
            // strip remains media enclosures
            '/^\\s*@media\\s[^{]+{(.*)}\\s*}\\s/misU',
            '/^\\s*@-?[A-Za-z-]+\\s[^{]+{(.*)}\\s*}\\s/misU',
        );

        $replace = array(
            '',
            '',
            '',
            '',
        );

non funziona
Sheenu il

la modifica dei file non è una soluzione, quindi per favore rimuovi i tuoi ans da qui
Rohit Kaushik,
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.