diff --git a/plugins/Ecommerce/Controller.php b/plugins/Ecommerce/Controller.php index 54278bbede36cff03f45df49cf0149b3650d6330..9a06ec720fa111e148587601427a8b5a9a7405f7 100644 --- a/plugins/Ecommerce/Controller.php +++ b/plugins/Ecommerce/Controller.php @@ -55,6 +55,39 @@ class Controller extends \Piwik\Plugins\Goals\Controller return $this->ecommerceReport(); } + public function products() + { + $goal = $this->getMetricsForGoal(Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER); + $conversions = $goal['nb_conversions']; + + $goal = $this->getMetricsForGoal(Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART); + $cartNbConversions = $goal['nb_conversions']; + + $preloadAbandonedCart = $cartNbConversions !== false && $conversions == 0; + + $goalReportsByDimension = new View\ReportsByDimension('Goals'); + + $ecommerceCustomParams = array(); + if ($preloadAbandonedCart) { + $ecommerceCustomParams['abandonedCarts'] = '1'; + } else { + $ecommerceCustomParams['abandonedCarts'] = '0'; + } + + $goalReportsByDimension->addReport( + 'Goals_Products', 'Goals_ProductSKU', 'Goals.getItemsSku', $ecommerceCustomParams); + $goalReportsByDimension->addReport( + 'Goals_Products', 'Goals_ProductName', 'Goals.getItemsName', $ecommerceCustomParams); + $goalReportsByDimension->addReport( + 'Goals_Products', 'Goals_ProductCategory', 'Goals.getItemsCategory', $ecommerceCustomParams); + + $view = new View('@Ecommerce/products'); + $this->setGeneralVariablesView($view); + + $view->productsByDimension = $goalReportsByDimension->render(); + return $view->render(); + } + public function sales() { $viewOverview = $this->getGoalReportView(Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER); diff --git a/plugins/Ecommerce/Menu.php b/plugins/Ecommerce/Menu.php index 0de27f8fa35b3ce1a0999e3a82258a45cea828d0..331715be4fc563ddf8f478a33b8b294fdcf1a7d8 100644 --- a/plugins/Ecommerce/Menu.php +++ b/plugins/Ecommerce/Menu.php @@ -33,7 +33,8 @@ class Menu extends \Piwik\Plugin\Menu $menu->addItem('Goals_Ecommerce', '', $ecommerceUrl, 24); $menu->addItem('Goals_Ecommerce', 'General_Overview', $ecommerceUrl, 1); $menu->addItem('Goals_Ecommerce', 'Goals_EcommerceLog', $this->urlForAction('ecommerceLogReport'), 2); - $menu->addItem('Goals_Ecommerce', 'Ecommerce_Sales', $this->urlForAction('sales', $ecommerceParams), 3); + $menu->addItem('Goals_Ecommerce', 'Goals_Products', $this->urlForAction('products', $ecommerceParams), 3); + $menu->addItem('Goals_Ecommerce', 'Ecommerce_Sales', $this->urlForAction('sales', $ecommerceParams), 4); } } diff --git a/plugins/Ecommerce/templates/products.twig b/plugins/Ecommerce/templates/products.twig new file mode 100644 index 0000000000000000000000000000000000000000..4cb67d456ec6f3138cc751dd4e2fec31844a65b5 --- /dev/null +++ b/plugins/Ecommerce/templates/products.twig @@ -0,0 +1,3 @@ +<h2 piwik-enriched-headline>{{ 'Goals_Products'|translate }}</h2> + +{{ productsByDimension|raw }} diff --git a/plugins/Goals/Controller.php b/plugins/Goals/Controller.php index ae699175d3793c1320eb419958ae9ac2550f5426..4248ac4ec9345c6f38458a5140b6b46a1c948def 100644 --- a/plugins/Goals/Controller.php +++ b/plugins/Goals/Controller.php @@ -436,13 +436,6 @@ class Controller extends \Piwik\Plugin\Controller } else { $ecommerceCustomParams['abandonedCarts'] = '0'; } - - $goalReportsByDimension->addReport( - 'Goals_Products', 'Goals_ProductSKU', 'Goals.getItemsSku', $ecommerceCustomParams); - $goalReportsByDimension->addReport( - 'Goals_Products', 'Goals_ProductName', 'Goals.getItemsName', $ecommerceCustomParams); - $goalReportsByDimension->addReport( - 'Goals_Products', 'Goals_ProductCategory', 'Goals.getItemsCategory', $ecommerceCustomParams); } if ($conversions > 0) {