आदेश जगह पर ईमेल में निम्न त्रुटि है और ठीक से प्रदर्शित नहीं होती है
CSS Inline Error: Warning: DOMXPath::query(): Invalid expression in .../vendor/pelago/emogrifier/Classes/Emogrifier.php on line 269
मैं यह कैसे तय करुं?
आदेश जगह पर ईमेल में निम्न त्रुटि है और ठीक से प्रदर्शित नहीं होती है
CSS Inline Error: Warning: DOMXPath::query(): Invalid expression in .../vendor/pelago/emogrifier/Classes/Emogrifier.php on line 269
मैं यह कैसे तय करुं?
जवाबों:
यह 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
मैं अभी हाल ही में इसी तरह की समस्या से आया था। मुझे उम्मीद है कि ये बदलाव आपकी मदद कर सकते हैं।
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';" टिप्पणी की गई (या हटा दी गई)
अब मुझे 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(
'',
'',
'',
'',
);