Posted in core
7800
1:04 am, February 19, 2022
 

generate view statistics widget in php class extend

How i generate the Week, Month and Year view statistics widget for this site. 

Views Widget Function

This generates the widget based on the views data.

PHP

// views widget
  /*
  using fields_array for incoming variables
  this->fields_array = array(); // reset the array each time.
  this->fields_array["linked_class"] = $linked_class;
  this->fields_array["linked_uid"] = $linked_uid;
  generates a widget showing hits today, this week, month and year.
  will need multiple functions to calculate these, maybe break it up and reuse them.
  */
  public function views_widget($linked_class,$linked_uid) {

    // views this week
    $this->fields_array = array(); // reset the array each time.
    $this->fields_array["linked_class"] = $linked_class;
    $this->fields_array["linked_uid"] = $linked_uid;
    // $this->fields_array["week_num"] = $week_num; or
    $this->fields_array["week_num"] = date("W");

    $views_week_single = $this->views_week_single();

    $views_widget_template = new template("views-widget-table.html");

    $views_widget_template->set("views_week_single", $views_week_single);

    // get the monthly views
    $this->fields_array["month_num"] = date('m');
    $views_month_single = $this->views_month_single();
    $views_widget_template->set("views_month_single", $views_month_single);

    // get the yearly views
    $this->fields_array["year_num"] = date('y');
    $views_year_single = $this->views_year_single();
    $views_widget_template->set("views_year_single", $views_year_single);

    return $views_widget_template->output();


  }

 

Widget Template File

This is the html template used for the widget layout. 

PHP

<style>
  .view-title {
      text-transform: uppercase;
      font-weight: bold;
      font-size: 12px;
      color: #62b174;
      margin-bottom: 5px;
      padding-bottom: 5px;
      border-bottom: 1px solid #3a3a3a;
  }
  .view-number {
      text-transform: uppercase;
      font-weight: bold;
      font-size: 32px;
      color: #FFF;
  }
</style>
<div class='card mb-3 view-stats'>
  <h5 class='card-header'>View Statistics</h5>
  <div class='card-body'>
    <div class='row'>
        <div class='col col-lg-4'>
          <div class='view-title'>
            This Week
          </div>
          <div class='view-number'>
            [@views_week_single]
          </div>
        </div>
        <div class='col col-lg-4'>
          <div class='view-title'>
            This Month
          </div>
          <div class='view-number'>
            [@views_month_single]
          </div>
        </div>
        <div class='col col-lg-4'>
          <div class='view-title'>
            This Year
          </div>
          <div class='view-number'>
            [@views_year_single]
          </div>
        </div>
    </div>
  </div>
</div>

Adding the widget to the page content

Add the widget to page content, this is the last bit. 

PHP

// generate a views widget
	$page_content .= $views_class->views_widget($linked_class = $p2,$linked_uid = $p3);

..

View Statistics
This Week
216
This Month
839
This Year
2553

No Items Found.

Add Comment
Type in a Nick Name here
 
Search Code
Search Code by entering your search text above.
Welcome

This is my test area for webdev. I keep a collection of code here, mostly for my reference. Also if i find a good link, i usually add it here and then forget about it. more...

Subscribe to weekly updates about things i have added to the site or thought interesting during the last week.

You could also follow me on twitter or not... does anyone even use twitter anymore?

If you found something useful or like my work, you can buy me a coffee here. Mmm Coffee. ☕

❤️👩‍💻🎮

🪦 2000 - 16 Oct 2022 - Boots
Random Quote
Our brains are wired to find things we are looking for - if your always cynical or waiting for things to go wrong, then your life will reflect that. On the other hand, having a positive outlook on life will bring you joy and provide you with inspiration when you least expect it ☀️🍉🌴
Unknown
Random CSS Property

column-fill

The column-fill CSS property controls how an element's contents are balanced when broken into columns.
column-fill css reference