/** * Push `trackSiteSearch' to tracker on search result page * * @param \Magento\Framework\Event\Observer $observer * @return \Henhed\Piwik\Observer\SearchResultObserver */ public function execute(\Magento\Framework\Event\Observer $observer) { if (!$this->_dataHelper->isTrackingEnabled()) { return $this; } $query = $this->_queryFactory->get(); $piwikBlock = $this->_view->getLayout()->getBlock('piwik.tracker'); /* @var $query \Magento\Search\Model\Query */ /* @var $piwikBlock \Henhed\Piwik\Block\Piwik */ $keyword = $query->getQueryText(); $resultsCount = $query->getNumResults(); if (is_null($resultsCount)) { // If this is a new search query the result count hasn't been saved // yet so we have to fetch it from the search result block instead. $resultBock = $this->_view->getLayout()->getBlock('search.result'); /* @var $resultBock \Magento\CatalogSearch\Block\Result */ if ($resultBock) { $resultsCount = $resultBock->getResultCount(); } } if (is_null($resultsCount)) { $this->_piwikTracker->trackSiteSearch($keyword); } else { $this->_piwikTracker->trackSiteSearch($keyword, false, (int) $resultsCount); } if ($piwikBlock) { // Don't push `trackPageView' when `trackSiteSearch' is set $piwikBlock->setSkipTrackPageView(true); } return $this; }