1
1
<?php
2
+
3
+ use Magento \Framework \Escaper ;
4
+ use Meta \Conversion \Block \Pixel \AddToCart ;
5
+
2
6
/**
3
- * @var \Meta\Conversion\Block\Pixel\ AddToCart $block
4
- * @var $escaper \Magento\Framework\Escaper
7
+ * @var AddToCart $block
8
+ * @var Escaper $escaper
5
9
*/
10
+
6
11
$ trackerUrl = $ block ->getTrackerUrl ();
7
12
?>
8
13
<?php if ($ block ->getFacebookPixelID ()): ?>
9
14
<!-- Added the new component below to track server events -->
10
15
<script>
11
16
window.addToCartData =
12
17
<?= /* @noEscape */ json_encode ([
13
- " url " => $ escaper ->escapeUrl ($ trackerUrl ),
14
- " eventName " => $ block ->getEventToObserveName (),
18
+ ' url ' => $ escaper ->escapeUrl ($ trackerUrl ),
19
+ ' eventName ' => $ block ->getEventToObserveName (),
15
20
'fbAgentVersion ' => $ block ->getFacebookAgentVersion (),
16
21
'fbPixelId ' => $ block ->getFacebookPixelID (),
17
22
'source ' => $ block ->getSource (),
18
23
'pluginVersion ' => $ block ->getPluginVersion (),
19
24
'track ' => 'track ' ,
20
25
'event ' => 'AddToCart '
21
-
22
26
]); ?>
23
27
</script>
24
28
<script>
@@ -27,33 +31,38 @@ $trackerUrl = $block->getTrackerUrl();
27
31
'Meta_Conversion/js/metaPixelTracker'
28
32
], function ($, metaPixelTracker) {
29
33
30
- var product_info_url = '<?= /* @noEscape */ $ block ->getProductInfoUrl () ?> ';
34
+ const product_info_url = '<?= /* @noEscape */ $ block ->getProductInfoUrl () ?> ';
31
35
32
36
$(document).on('ajax:addToCart', function (event, data) {
37
+ let simpleProductId;
38
+ // Get id of last added product
39
+ const productId = data.productIds[data.productIds.length - 1];
33
40
if (!data.response.backUrl) {
34
41
// check product data from swatch widget
35
- var swatchData = $('[data-role=swatch-options]').data('mage-SwatchRenderer');
36
- if (swatchData) {
37
- var simpleProductId = swatchData.getProductId();
42
+ const swatchData = $('[data-role=swatch-options]').data('mage-SwatchRenderer');
43
+ if (swatchData && swatchData.getProductId() ) {
44
+ simpleProductId = swatchData.getProductId();
38
45
} else {
39
46
// In case product is added from category page get options using added product's id
40
- // Get id of last added product
41
- var productId = data.productIds[data.productIds.length - 1];
42
- var categorySwatchData = $('[data-role=swatch-option-' + productId + ']')
47
+ const categorySwatchData = $('[data-role=swatch-option-' + productId + ']')
43
48
.data('mage-SwatchRenderer');
44
- if (categorySwatchData) {
45
- var simpleProductId = categorySwatchData.getProductId();
49
+ if (categorySwatchData && categorySwatchData.getProductId() ) {
50
+ simpleProductId = categorySwatchData.getProductId();
46
51
} else {
47
52
// else check product data from configurable options
48
- var configurableProduct = data.form.data().mageConfigurable;
53
+ const configurableProduct = data.form.data().mageConfigurable;
49
54
if (configurableProduct) {
50
- var simpleProductId = configurableProduct.simpleProduct;
55
+ simpleProductId = configurableProduct.simpleProduct;
51
56
}
52
57
}
53
58
}
54
59
// otherwise use the product sku
55
- var product_sku = data.sku;
56
- var form_key = jQuery("[name='form_key']").val();
60
+ const product_sku = data.sku;
61
+ // use last added product id if swatch data is not available
62
+ if (!simpleProductId) {
63
+ simpleProductId = productId;
64
+ }
65
+ const form_key = jQuery("[name='form_key']").val();
57
66
$.ajax({
58
67
url: product_info_url,
59
68
data: {
@@ -64,7 +73,7 @@ $trackerUrl = $block->getTrackerUrl();
64
73
type: 'get',
65
74
dataType: 'json',
66
75
success: function (res) {
67
- var addToCartConfigPixel = {
76
+ const addToCartConfigPixel = {
68
77
"url": window.addToCartData.url,
69
78
"payload": {
70
79
"eventName": window.addToCartData.eventName,
0 commit comments