Extend Core Statistic System
concrete5 comes with a simple statistic system that can keep track of number of visits in your site. If you enabled statistics (Dashboard>System & settings>Statistics), for every page view, concrete will inserts a record into the pageStatistics table. Looking at this table, you see it contains these fields:
cID: visited page id date timestamp uID: default=0, user id, if a logged-in user visit the page
At the Dashbord>Reports>Statistics you only can see number of page views in the last 7 days. In this tutorial, I will show you how other reports, that use the inserted data, can be created for the statistic page.
To add a list that show top 10 most popular pages of your site on the statistic page:
1- Tweaking Model: first we add a method to page statisic model. For this copy /concrete/models/page_statistics.php to /models/page_statistics.php. this will override the main file. Now add this method that run a query, get data we need for our report:
public static function getTotalPageViewsByPage() { $db = Loader::db(); return $db->GetAll("select cID,count(pstID) AS num from PageStatistics GROUP BY cID HAVING num>0 ORDER BY num DESC LIMIT 10"); }
2- Tweaking Controller: copy /concrete/controllers\dashboard/reports/statistics.php to /controllers\dashboard/reports/statistics.php. this will override the main file. Now add this method that get the required data from the method added in previous step:
public function view() { $this->addHeaderItem(Loader::helper('html')->javascript('jquery.visualize.js')); $this->addHeaderItem(Loader::helper('html')->css('jquery.visualize.css')); $this->setLatestPageViews(); $this->setLatestPagesCreated(); $this->setLatestRegistrations(); $this->setDownloadStatistics(); $this->set('totalVersions', PageStatistics::getTotalPageVersions()); $this->set('totalEditMode', PageStatistics::getTotalPagesCheckedOut()); $this->set('totalPageViewsByPage', PageStatistics::getTotalPageViewsByPage()); }
Note: this method copied/pasted from /concrete/core/controllers/single_pages/dashboard/reports/statistics.php, I just added last line.
3- Tweaking Single Page: copy /concrete/single_pages/dashboard/reports/statistics.php to /single_pages/dashboard/reports/statistics.php. this will override the main file. Now add this table at the end of the file, befor script tag, that prints data into the statistic single page:
$value) { $p = Page::getByID($value['cID']); if(!$p->cIsSystemPage){ ?>
Now go to the statistic, you should see a table listing the top 10 popular pages of your site.
Posted by on March 28th, 2013
Comments
cloroquine
what erectile dysfunction solution works best
is erectile dysfunction reversible
what does hydroxychloroquine treat
hydrochlorothiazide 12.5 mg
erectile natural diet pdf
plaquenil therapy
tadalafil liquid
tadalafil 40 mg daily
generic name for z pack
buy zithromax cheap