Sipariş postası onayı DOMXPath :: query () hatası oluşturur


12

sipariş üzerine e-posta aşağıdaki hatayı içerir ve düzgün görüntülenmez

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

Bunu nasıl düzeltirim?


Bu konuda herhangi bir güncelleme
Jordy S Chemparathy

ben de aynı sorunla karşı karşıya :)
Pratik

Yanıtlar:


5

Bu Emogrifier modülünün bir hatası olabilir .

Bunu şu require-devbölüme koyun composer.json:

"pelago/emogrifier": "1.0.0 as 0.1.1"

Veya geliştirme sürümünü tercih edin:

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

Bir uyarı var: Bu sorun, statik içerik dağıtımı işlenirken de ortaya çıkıyor gibi görünüyor.

GÜNCELLEME:

Bir göz atmalıyız:

satıcı / Magento / tema önuç-boş / 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

Magento e-postası daha az dosya alır . Bu nedenle, bu dosyalara desteklenmeyen bazı seçiciler eklersek , bu soruna neden olabilir.

satıcı / Magento / tema önuç-boş / web / css / kaynak / sağlamamız gerekti-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)

Örneğin, özel temamıza desteklenmeyen bazı seçiciler ekliyoruz:

Uygulamanın / tasarım / kullanıcı arayüzü / VendorTheme / default / web / css / kaynak / _theme.less

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

Bu sorun tekrar ortaya çıkacaktır.

ÇÖZÜM:

E-posta stillerimiz için bağımsız dosyalar içeren yeni bir klasör oluşturmalıyız . Ve bu dosyalar sadece e-posta içindir.

Uygulamanın / tasarım / kullanıcı arayüzü / 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] Sürüm kısıtlaması 0.1.1 olarak ayrıştırılamadı: Geçersiz sürüm dizesi "0.1.1" olarak
Pratik Mehta

2

Kısa süre önce benzer bir problemden geldim. Umarım bu değişiklikler size yardımcı olabilir.

Magento 2 için bir çözüm buldu

dosyaları yarattı

/web/css/email.less

ve

/web/css/email-inline.less

özel temamda ve

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

ve

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

Lütfen aşağıda not edin

ancak her biri "@import 'kaynak / _theme.less';" yorum yaptı (veya kaldırıldı)


Bunu yaparak tema css e-posta css ayırmak değil mi?
Rohit Kaushik

Bunu yaparak tema css e-posta css ayırmak değil mi? ==> evet, umarım bu çözüm sizin için yararlıdır
Nikunj Panchal

1

Magento 2.2.2'yi kullanarak aynı hatayı deneyerek bu şekilde düzeltin:

"pelago/emogrifier": "2.0.0 as 1.2.0" composer.json'daki gereksinim olarak
composer update pelago/emogifier && magento setup:upgrade


-1

Şimdi
/var/www/html/vendor/pelago/emogrifier/Classes/Emogrifier.php
Line 595 çözümünü buldum , aşağıdaki işlevi bulun ve değiştirin

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

değiştirmek

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

çalışmıyor
Sheenu

düzenleme değil bir çözüm değil bu yüzden ans buradan kaldırın
Rohit Kaushik
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.