@@ -18,8 +18,10 @@ $enableLazyLoadingWithoutBorders = (bool)$block->getVar(
18
18
'enable_lazy_loading_for_images_without_borders ' ,
19
19
'Magento_Catalog '
20
20
);
21
+ $ width = (int )$ block ->getWidth ();
22
+ $ paddingBottom = $ block ->getRatio () * 100 ;
21
23
?>
22
- <span class="product-image-container" id=" product-image-container-<?= /* @noEscape */ $ block ->getProductId () ?> ">
24
+ <span class="product-image-container product-image-container-<?= /* @noEscape */ $ block ->getProductId () ?> ">
23
25
<span class="product-image-wrapper">
24
26
<img class="<?= $ escaper ->escapeHtmlAttr ($ block ->getClass ()) ?> "
25
27
<?php foreach ($ block ->getCustomAttributes () as $ name => $ value ): ?>
@@ -36,11 +38,29 @@ $enableLazyLoadingWithoutBorders = (bool)$block->getVar(
36
38
<?php endif ; ?>
37
39
alt="<?= $ escaper ->escapeHtmlAttr ($ block ->getLabel ()) ?> "/></span>
38
40
</span>
39
- <?= /* @noEscape */ $ secureRenderer ->renderStyleAsTag (
40
- 'width: ' . (int )$ block ->getWidth () . 'px; ' ,
41
- '#product-image-container- ' . $ block ->getProductId ()
42
- ) ?>
43
- <?= /* @noEscape */ $ secureRenderer ->renderStyleAsTag (
44
- 'padding-bottom: ' . ($ block ->getRatio () * 100 ) . '%; ' ,
45
- '#product-image-container- ' . $ block ->getProductId () . ' span.product-image-wrapper '
46
- ) ?>
41
+ <?php
42
+ $ styles = <<<STYLE
43
+ .product-image-container- {$ block ->getProductId ()} {
44
+ width: {$ width }px;
45
+ }
46
+ .product-image-container- {$ block ->getProductId ()} span.product-image-wrapper {
47
+ padding-bottom: {$ paddingBottom }%;
48
+ }
49
+ STYLE ;
50
+ //In case a script was using "style" attributes of these elements
51
+ $ script = <<<SCRIPT
52
+ prodImageContainers = document.querySelectorAll(".product-image-container- {$ block ->getProductId ()}");
53
+ for (var i = 0; i < prodImageContainers.length; i++) {
54
+ prodImageContainers[i].style.width = " {$ width }px";
55
+ }
56
+ prodImageContainersWrappers = document.querySelectorAll(
57
+ ".product-image-container- {$ block ->getProductId ()} span.product-image-wrapper"
58
+ );
59
+ for (var i = 0; i < prodImageContainersWrappers.length; i++) {
60
+ prodImageContainersWrappers[i].style.paddingBottom = " {$ paddingBottom }%";
61
+ }
62
+ SCRIPT ;
63
+
64
+ ?>
65
+ <?= /* @noEscape */ $ secureRenderer ->renderTag ('style ' , [], $ styles , false ) ?>
66
+ <?= /* @noEscape */ $ secureRenderer ->renderTag ('script ' , ['type ' => 'text/javascript ' ], $ script , false ) ?>
0 commit comments