Posted in core
7527
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
119
This Month
566
This Year
2280

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

'Dawnie' used to say, "It's really quite simple: Be kind, and the rest takes care of itself. Never do anything that's not kind".


Dawn Atherton
Random CSS Property

columns

The columns CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths.
columns css reference