La confirmación del correo del pedido genera un error DOMXPath :: query ()


12

En el pedido, el correo electrónico contiene el siguiente error y no se muestra correctamente

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

¿Cómo puedo solucionar esto?


Cualquier actualización sobre este tema
— Jordy S Chemparathy

También me enfrento al mismo problema :)
— Pratik

Respuestas:


5

Esto puede ser un error del módulo Emogrifier .

Pon esto en la require-devparte de composer.json:

"pelago/emogrifier": "1.0.0 as 0.1.1"

O prefiera la versión de desarrollo:

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

Hay un aviso: parece que este problema también ocurre al procesar la implementación de contenido estático.

ACTUALIZAR:

Deberíamos echar un vistazo:

vendor / magento / theme-frontend-blank / 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

El correo electrónico de Magento importará algunos archivos menos . Entonces, si agregamos algunos selectores no compatibles a estos archivos, eso puede causar este problema.

vendor / magento / theme-frontend-blank / 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)

Por ejemplo, en nuestro tema personalizado, agregamos algunos selectores no compatibles:

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

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

Este problema volverá a ocurrir.

SOLUCIÓN:

Deberíamos crear una nueva carpeta que contenga los archivos de stand menos para nuestros estilos de correo electrónico . Y, estos archivos son solo para correo electrónico.

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] No se pudo analizar la restricción de versión como 0.1.1: Cadena de versión no
— válida

2

Hace poco vine de un problema similar. Espero que estos cambios te puedan ayudar.

encontró una solución para Magento 2

creado los archivos

/web/css/email.less

y

/web/css/email-inline.less

en mi tema personalizado y agregué el contenido de

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

y

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

Por favor, tenga en cuenta a continuación

pero cada uno con la línea "@import 'source / _theme.less';" comentado (o eliminado)


Al hacer esto, está separando el tema CSS del correo electrónico CSS ¿verdad?
— Rohit Kaushik

Al hacer esto, está separando el tema CSS del correo electrónico CSS ¿verdad? ==> sí, espero que esta solución sea útil para usted
— Nikunj Panchal

1

Usando Magento 2.2.2 y experimentando el mismo error y lo solucionó de esta manera:

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


-1

Ahora tengo la solución
/var/www/html/vendor/pelago/emogrifier/Classes/Emogrifier.php
Line 595, encontrar y reemplazar la siguiente función

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(
            '',
            '',
            '',         
        );

reemplazar

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(
            '',
            '',
            '',
            '',
        );

no funciona
— Sheenu

en la edición de archivos no es una solución así que por favor retira sus ans de aquí
— Rohit Kaushik
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.