Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / PHP

Concrete5 - Display page views count

5.00/5 (1 vote)
2 Jul 2013CPOL 9.1K  
Sometimes it is required to display the number of page views of blog posts, discussions, or other pages. This is how to do it.

Display number of page views count

Firstly you need to create a page called page_counter.php and put the below code there:

PHP
defined('C5_EXECUTE') or die(_("Access Denied."));
 
Loader::model('page_statistics');
 
class PageCounter extends PageStatistics {
 
public static function getTotalPageViewsForPageID($cID = null, $date = null) {
    $db = Loader::db();
    if ($date != null) {
        return $db->GetOne("select COUNT(pstID) FROM PageStatistics where date = ? and cID = ?", 
                           array($date,$cID));
    } else {
        return $db->GetOne("select COUNT(pstID) FROM PageStatistics where cID = ?", array($cID));
    }
}
 
public static function getRegisteredPageViewsForPageID($cID = null, $date = null) {
    $db = Loader::db();
    if ($date != null) {
        return $db->GetOne("SELECT COUNT(pstID) FROM PageStatistics WHERE date = ? AND cID = ? AND uID != 0", 
                           array($date,$cID));
    } else {
        return $db->GetOne("SELECT COUNT(pstID) FROM PageStatistics WHERE cID = ? AND uID != 0", 
                           array($cID));
    }
}
 
public static function getVisitorsPageViewsForPageID($cID = null, $date = null) {
    $db = Loader::db();
    if ($date != null) {
        return $db->GetOne("SELECT COUNT(pstID) FROM PageStatistics WHERE date = ? AND cID = ? AND uID = 0", 
                           array($date,$cID));
    } else {
        return $db->GetOne("SELECT COUNT(pstID) FROM PageStatistics WHERE cID = ? AND uID = 0", array($cID));
    }
}
}

Then upload the page to the roots models folder. Here I've defined three different methods which count total page views, page views by registered users, and page views by visitors. After that you need to put the below code where you want to display the page view statistics.

PHP
Loader::model('page_counter');

echo 'Total Page Views: '.PageCounter::getTotalPageViewsForPageID($cobj->getCollectionID()).'';
 
echo 'Registered User ('.PageCounter::getRegisteredPageViewsForPageID($cobj->getCollectionID()).'), ';
 
echo 'Visitors ('.PageCounter::getVisitorsPageViewsForPageID($cobj->getCollectionID()).')';

Note: $cobj->getCollectionID() is the page ID, might be changed if any other variable is used instead of $cobj.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)