Подтверждение заказа по почте генерирует ошибку DOMXPath :: query ()

12

на месте заказа электронная почта содержит следующую ошибку и не отображается должным образом

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

Как это исправить?

deroccha
источник
Любое обновление по этому вопросу
Jordy S Chemparathy
я также сталкиваюсь с той же проблемой :)
Pratik

Ответы:

5

Это может быть ошибкой модуля Emogrifier .

Поместите это в require-devчасть composer.json:

"pelago/emogrifier": "1.0.0 as 0.1.1"

Или предпочитаете версию для разработчиков:

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

Есть уведомление: кажется, что эта проблема также возникает при обработке развертывания статического контента.

ОБНОВИТЬ:

Мы должны взглянуть:

продавец / Magento / тема-интерфейс наводка / веб / 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

Электронная почта Magento будет импортировать несколько файлов меньше . Таким образом, если мы добавим некоторые неподдерживаемые селекторы в эти файлы, это может вызвать эту проблему.

продавец / Magento / тема-интерфейс наводка / веб / CSS / источник / _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)

Например, в нашей пользовательской теме мы добавили некоторые неподдерживаемые селекторы:

приложение / дизайн / интерфейс / VendorTheme / по умолчанию / веб / CSS / источник / _theme.less

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

Эта проблема возникнет снова.

РЕШЕНИЕ:

Мы должны создать новую папку, в которой будут храниться файлы для наших стилей электронной почты . И эти файлы только для электронной почты.

приложение / дизайн / интерфейс / VendorTheme / по умолчанию / веб / CSS / email.less

@import 'source/lib/email/stand/_lib.less'; // Global lib
@import 'source/lib/email/stand/variables/_email.less'; // Global email variables
Хоа ТруонгДинь
источник
[UnexpectedValueException] Не удалось проанализировать ограничение версии как 0.1.1: неверная строка версии «как 0.1.1»
Pratik Mehta
2

Я только недавно пришел с похожей проблемой. Я надеюсь, что эти изменения могут помочь вам.

нашел решение для Magento 2

создал файлы

/web/css/email.less

и

/web/css/email-inline.less

в моей пользовательской теме и добавил контент из

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

и

/vendor/magento/theme-frontend-blank/web/css/email-inline.css соответственно

Пожалуйста, обратите внимание, ниже

но каждый со строкой "@import 'source / _theme.less';" закомментировано (или удалено)

Никунь Панчал
источник
Делая это, вы отделяете тему CSS от электронной почты CSS правильно?
Рохит Каушик
Делая это, вы отделяете тему CSS от электронной почты CSS правильно? ==> Да, я надеюсь, что это решение будет полезным для вас
Nikunj Panchal
1

Используя Magento 2.2.2, испытал ту же ошибку и исправил ее следующим образом:

"pelago/emogrifier": "2.0.0 as 1.2.0" как требование в composer.json
composer update pelago/emogifier && magento setup:upgrade

Julime
источник
-1

Теперь у меня есть решение
/var/www/html/vendor/pelago/emogrifier/Classes/Emogrifier.php
Строка 595, найдите и замените нижеприведенную функцию

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

замещать

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(
            '',
            '',
            '',
            '',
        );
Нихил Вагела
источник
это не работает
Sheenu
редактирование в файлах не является решением, поэтому, пожалуйста, удалите ваши
Rohit