आदेश मेल पुष्टि 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.