La fusion de fichiers CSS Magento prétend que le nom d'hôte de mes données-uris parce que le RegEx dans Mage_Core_Model_Design_Package
( beforeMergeCss
) ne fonctionne pas comme prévu. Il doit ajouter le nom d'hôte aux chemins d'image relatifs, mais pas aux URI de données.
$cssUrl = '/url\\(\\s*(?!data:)([^\\)\\s]+)\\s*\\)?/';
$contents = preg_replace_callback($cssUrl, array($this, '_cssMergerUrlCallback'), $contents);
Code CSS:
background: #fafafa url("data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iM3B4IiB2aWV3Qm94PSIwIDAgNiAzIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2IDMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwb2x5Z29uIHBvaW50cz0iNS45OTIsMCAyLjk5MiwzIC0wLjAwOCwwICIvPjwvc3ZnPg==") no-repeat;
Résultat après fusion:
background: #fafafa url("http://shop12.dev/skin/frontend/shop/default/styles/data:image/svg+xml;base64")PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iM3B4IiB2aWV3Qm94PSIwIDAgNiAzIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2IDMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwb2x5Z29uIHBvaW50cz0iNS45OTIsMCAyLjk5MiwzIC0wLjAwOCwwICIvPjwvc3ZnPg==") no-repeat;
Comment éviter cela? Je n'ai pas pu trouver comment corriger le synthax du RegEx utilisé. (L'utilisation d'un GIF n'est pas une vraie solution pour moi)
magento-1.8
css
bug
regex
Michael
la source
la source
En fait, cette expression rationnelle couvre plus de cas
Surtout ces données svg optimisées avec des dégradés: http://codepen.io/tigt/post/optimizing-svgs-in-data-uris
la source
J'aurais le même problème (toujours présent dans la version Magento 1.9.3.1) donc j'ai créé un module pour résoudre ce bug: https://github.com/just-better/magento1-css-merge-data-uri- réparer
la source