diff --git a/vendor/magento/module-reports/Controller/Report/Product/View.php b/vendor/magento/module-reports/Controller/Report/Product/View.php new file mode 100644 index 0000000000000..6c656793e6eab --- /dev/null +++ b/vendor/magento/module-reports/Controller/Report/Product/View.php @@ -0,0 +1,78 @@ +request = $context->getRequest(); + } + + /** + * @inheritdoc + */ + public function execute() + { + $result = $this->resultJsonFactory->create(); + + if ($this->reportStatus->isReportEnabled((string)Event::EVENT_PRODUCT_VIEW)) { + $productId = $this->request->getParam('product_id'); + + $viewData['product_id'] = $productId; + $viewData['store_id'] = $this->storeManager->getStore()->getId(); + if ($this->customerSession->isLoggedIn()) { + $viewData['customer_id'] = $this->customerSession->getCustomerId(); + } else { + $viewData['visitor_id'] = $this->customerVisitor->getId(); + } + $this->productIndexFactory->create()->setData($viewData)->save()->calculate(); + $this->eventSaver->save(Event::EVENT_PRODUCT_VIEW, $productId); + } + + return $result->setData([]); + } +} diff --git a/vendor/magento/module-reports/Observer/CatalogProductViewObserver.php b/vendor/magento/module-reports/Observer/CatalogProductViewObserver.php index b3ec141ef01a7..e9f952279ad99 100644 --- a/vendor/magento/module-reports/Observer/CatalogProductViewObserver.php +++ b/vendor/magento/module-reports/Observer/CatalogProductViewObserver.php @@ -1,7 +1,7 @@ @@ -15,9 +15,6 @@ - - - diff --git a/vendor/magento/module-reports/etc/frontend/routes.xml b/vendor/magento/module-reports/etc/frontend/routes.xml new file mode 100644 index 0000000000000..5b43b70eca733 --- /dev/null +++ b/vendor/magento/module-reports/etc/frontend/routes.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/vendor/magento/module-reports/view/frontend/layout/catalog_product_view.xml b/vendor/magento/module-reports/view/frontend/layout/catalog_product_view.xml new file mode 100644 index 0000000000000..7d83005828125 --- /dev/null +++ b/vendor/magento/module-reports/view/frontend/layout/catalog_product_view.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/vendor/magento/module-reports/view/frontend/templates/product/report_viewed_product.phtml b/vendor/magento/module-reports/view/frontend/templates/product/report_viewed_product.phtml new file mode 100644 index 0000000000000..ff455e686ab45 --- /dev/null +++ b/vendor/magento/module-reports/view/frontend/templates/product/report_viewed_product.phtml @@ -0,0 +1,19 @@ + + diff --git a/vendor/magento/module-reports/view/frontend/web/js/product-viewed.js b/vendor/magento/module-reports/view/frontend/web/js/product-viewed.js new file mode 100644 index 0000000000000..c3bac05fc4211 --- /dev/null +++ b/vendor/magento/module-reports/view/frontend/web/js/product-viewed.js @@ -0,0 +1,20 @@ +/** + * Copyright 2025 Adobe + * All Rights Reserved. + */ + +define([ + 'jquery', + 'mage/url' +], function ($, urlBuilder) { + 'use strict'; + + return function (data) { + $.ajax({ + url: urlBuilder.build('reports/report_product/view'), + type: 'POST', + data: {'product_id': data.product_id }, + dataType: 'json' + }); + }; +});