回答:
これはEmogrifierモジュールのバグである可能性があります。
これを次のrequire-dev
部分に挿入しますcomposer.json
。
"pelago/emogrifier": "1.0.0 as 0.1.1"
または開発版を好む:
"pelago/emogrifier": "dev-master as 0.1.1"
通知があります:この問題は、静的コンテンツのデプロイを処理するときにも発生するようです。
更新:
見てみましょう:
vendor / magento / theme-frontend-blank / web / 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のメールでは、インポートされるファイルが少なくなります。したがって、サポートされていないセレクターをこれらのファイルに追加した場合、この問題が発生する可能性があります。
vendor / magento / theme-frontend-blank / web / 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
私は最近同様の問題から来ました。これらの変更がお役に立てば幸いです。
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 'source / _theme.less';」という行があります。コメントアウト(または削除)
今私はソリューション
/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(
'',
'',
'',
'',
);