ক্রম স্থানে ইমেলটিতে নিম্নলিখিত ত্রুটি রয়েছে এবং এটি সঠিকভাবে প্রদর্শন করে না
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
আমি কিভাবে এটা ঠিক করব?
উত্তর:
এটি ইমোগ্রিফায়ার মডিউলটির বাগ হতে পারে ।
এটি 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 / থিম-ফ্রন্টএন্ড-ফাঁকা / ওয়েব / 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 / ডিফল্ট / ওয়েব / সিএসএস / 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
এবং
যথাযথভাবে
নীচে নোট করুন
তবে প্রতিটি "@Import 'উত্স / _theme.less' লাইন সহ; মন্তব্য করা (বা সরানো)
এখন আমি সমাধান পেয়েছি
/var/www/html/vendor/pelago/emogrifier/Class/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(
'',
'',
'',
'',
);