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?

deroccha
fuente
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
Khoa TruongDinh
fuente
[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)

Nikunj Panchal
fuente
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

Julime
fuente
-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(
            '',
            '',
            '',
            '',
        );
Nikhil Vaghela
fuente
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