आदेश मेल पुष्टि DOMXPath :: क्वेरी () त्रुटि उत्पन्न करती है


12

आदेश जगह पर ईमेल में निम्न त्रुटि है और ठीक से प्रदर्शित नहीं होती है

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

मैं यह कैसे तय करुं?


इस मुद्दे पर कोई भी अपडेट
— जॉर्डन एस चेम्पैथी

मैं भी इसी मुद्दे का सामना कर रहा हूँ :)
— प्रतीक

जवाबों:


5

यह Emogrifier मॉड्यूल की एक बग हो सकती है ।

इसे इस require-devभाग में रखें composer.json:

"pelago/emogrifier": "1.0.0 as 0.1.1"

या विकास संस्करण पसंद करते हैं:

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

एक सूचना है: ऐसा लगता है कि स्थिर सामग्री को संसाधित करते समय यह समस्या भी होती है।

अपडेट करें:

हमें एक नज़र रखना चाहिए:

विक्रेता / Magento / विषय-दृश्यपटल-खाली / वेब / सीएसएस / 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 / विषय-दृश्यपटल-खाली / वेब / सीएसएस / स्रोत / _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 / डिफ़ॉल्ट / वेब / सीएसएस / स्रोत / _theme.less

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

यह समस्या फिर से होगी।

उपाय:

हमें एक नया फ़ोल्डर बनाना चाहिए जिसमें हमारी ईमेल शैलियों के लिए कम फ़ाइलें हों । और, ये फाइलें केवल ईमेल के लिए हैं।

एप्लिकेशन / डिजाइन / दृश्यपटल / VendorTheme / डिफ़ॉल्ट / वेब / सीएसएस / email.less

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

[अनपेक्षित विलेख] 0.1.1 के रूप में संस्करण की कमी को पार नहीं कर सका: अमान्य संस्करण स्ट्रिंग "0.1.1 के रूप में"
— प्रतीक मेहता

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 'स्रोत / _theme.less';" टिप्पणी की गई (या हटा दी गई)


ऐसा करके आप ईमेल सीएसएस से थीम सीएसएस को अलग कर रहे हैं?
— रोहित कौशिक

ऐसा करके आप ईमेल सीएसएस से थीम सीएसएस को अलग कर रहे हैं? ==> हाँ, मुझे आशा है कि यह समाधान आपके लिए उपयोगी है
— निकुंज पांचाल

1

Magento 2.2.2 का उपयोग करना और उसी त्रुटि का अनुभव करना और इसे इस तरह से ठीक करना:

"pelago/emogrifier": "2.0.0 as 1.2.0" संगीतकार के रूप में आवश्यकता। json
composer update pelago/emogifier && magento setup:upgrade


-1

अब मुझे solution
/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(
            '',
            '',
            '',
            '',
        );

यह काम नहीं कर रहा है
— शीनू

फाइलों में संपादन एक समाधान नहीं है, इसलिए कृपया अपना अंश यहां से हटा दें
— रोहित कौशिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.