From 5364959053ad9f086a37eff591bed7db7de67add Mon Sep 17 00:00:00 2001 From: mattpiwik Date: Mon, 15 Oct 2012 07:41:12 +0000 Subject: Refs #2992 Site Search KABOOM, Refs #49 Implementing Site Search tracking & reporting in Piwik core! * New Admin UI to customize, for each site, wheter site search is enabled. Also options to set default values to use. * New Reports: Searches, Searches with no result, Search categories, Top Pages Following a Search * to track "No result keyword" users will have to tag their site with a JS call, or add a new parameter to the search result page &search_count=X (X being zero for no result searches) * Reports works with Row evolution, PDF/HTML reports, Piwik Mobile * idaction_url is now NULLable because, Site Search records a page with idaction_name == Keyword, and idaction_url == NULL. This ensures that the Site Searches don't create "Page URL Not defined" records. * updates to Tracker JS API, new function trackSiteSearch, also added in PHP tracker * New fields in log_visit to track searches * new segment, "searches" which can be used to select visitors who did a search ie. searches>0 or those who searched a lot, ie searches>10 TODO: * commmit integration test, TESTING, DOCS, FAQ, release, and a nice Prayer to the universe and the stars, hoping that I can code a major new feature without any bug... * It would be awesome to have compatiblity with Transitions so we can see, for a given site search, what are the starting pages and Destination pages Thank you for your patience Timo, and thank in advance everyone for your help Testing this new feature! git-svn-id: http://dev.piwik.org/svn/trunk@7190 59fd770c-687e-43c8-a1e3-f5a4ff64c105 --- plugins/VisitsSummary/Controller.php | 29 ++++++++++++++++++++++---- plugins/VisitsSummary/templates/sparklines.tpl | 7 +++++++ 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'plugins/VisitsSummary') diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php index 08a1fe96fd..ba9d1453b2 100644 --- a/plugins/VisitsSummary/Controller.php +++ b/plugins/VisitsSummary/Controller.php @@ -73,7 +73,14 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller 'nb_outlinks', 'nb_uniq_outlinks' ); - + + $idSite = Piwik_Common::getRequestVar('idSite'); + $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite); + + if($displaySiteSearch) { + $selectableColumns[] = 'nb_searches'; + $selectableColumns[] = 'nb_keywords'; + } $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns, $selectableColumns, $documentation); @@ -110,11 +117,19 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller $view->urlSparklineMaxActions = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('max_actions'))); $view->urlSparklineActionsPerVisit = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_actions_per_visit'))); $view->urlSparklineBounceRate = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('bounce_rate'))); - + + $idSite = Piwik_Common::getRequestVar('idSite'); + $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite); + if($displaySiteSearch) + { + $view->urlSparklineNbSearches = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_searches', 'nb_keywords'))); + } + $view->displaySiteSearch = $displaySiteSearch; + $dataTableVisit = self::getVisitsSummary(); $dataRow = $dataTableVisit->getFirstRow(); - $dataTableActions = Piwik_Actions_API::getInstance()->get(Piwik_Common::getRequestVar('idSite'), Piwik_Common::getRequestVar('period'), Piwik_Common::getRequestVar('date'), Piwik_Common::getRequestVar('segment',false)); + $dataTableActions = Piwik_Actions_API::getInstance()->get($idSite, Piwik_Common::getRequestVar('period'), Piwik_Common::getRequestVar('date'), Piwik_Common::getRequestVar('segment',false)); $dataActionsRow = $dataTableActions->getFirstRow(); $view->nbUniqVisitors = (int)$dataRow->getColumn('nb_uniq_visitors'); @@ -131,7 +146,13 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller $view->bounceRate = Piwik::getPercentageSafe($nbBouncedVisits, $nbVisits); $view->maxActions = (int)$dataRow->getColumn('max_actions'); $view->nbActionsPerVisit = $dataRow->getColumn('nb_actions_per_visit'); - + + if($displaySiteSearch) + { + $view->nbSearches = (int)$dataActionsRow->getColumn('nb_searches'); + $view->nbKeywords = (int)$dataActionsRow->getColumn('nb_keywords'); + } + // backward compatibility: // show actions if the finer metrics are not archived $view->showOnlyActions = false; diff --git a/plugins/VisitsSummary/templates/sparklines.tpl b/plugins/VisitsSummary/templates/sparklines.tpl index fd50969ab4..b59144b4ce 100644 --- a/plugins/VisitsSummary/templates/sparklines.tpl +++ b/plugins/VisitsSummary/templates/sparklines.tpl @@ -42,6 +42,13 @@ {'VisitsSummary_NbUniqueOutlinksDescription'|translate:"$nbUniqueOutlinks"} {/if} + {if $displaySiteSearch} +
+ {sparkline src=$urlSparklineNbSearches} + {'VisitsSummary_NbSearchesDescription'|translate:"$nbSearches"|trim}, + {'VisitsSummary_NbKeywordsDescription'|translate:"$nbKeywords"} +
+ {/if}
{sparkline src=$urlSparklineMaxActions} {'VisitsSummary_MaxNbActions'|translate:"$maxActions"} -- cgit v1.2.3