답변:
이것은 Emogrifier 모듈 의 버그 일 수 있습니다 .
이것을 다음 require-dev
부분에 넣으십시오 composer.json
.
"pelago/emogrifier": "1.0.0 as 0.1.1"
또는 개발 버전을 선호하십시오.
"pelago/emogrifier": "dev-master as 0.1.1"
알림이 있습니다. 이 문제는 정적 콘텐츠 배포를 처리 할 때도 발생합니다.
최신 정보:
우리는 살펴 봐야합니다 :
공급 업체 / 마 젠토 / 테마 프론트 엔드-빈 / 웹 /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 이메일은 더 적은 파일을 가져옵니다 . 따라서 지원되지 않는 선택기를 이 파일에 추가 하면이 문제가 발생할 수 있습니다.
공급 업체 / 마 젠토 / 테마 프론트 엔드-빈 / 웹 /css/source/_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)
예를 들어, 사용자 정의 테마에서 지원되지 않는 선택기를 추가합니다.
app / design / frontend / VendorTheme / default / web / css / source / _theme.less
...
#customer-service-menu li.item:nth-child(2) {position: absolute;}
...
이 문제는 다시 발생합니다.
해결책:
우리는 우리의 이메일 스타일을위한 더 적은 파일을 포함하는 새로운 폴더를 만들어야합니다 . 그리고이 파일들은 이메일 전용입니다.
app / design / frontend / 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
나는 최근에 비슷한 문제에서왔다. 이러한 변경이 도움이 되었기를 바랍니다.
마 젠토 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 'source / _theme.less';" 주석 처리 (또는 제거)
이제 솔루션
/var/www/html/vendor/pelago/emogrifier/Classes/Emogrifier.php
Line 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(
'',
'',
'',
'',
);