Posted in
7323
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
136
This Month
547
This Year
2076
Add Comment
Other Items in core
Related Search Terms
Other Categories in Code
alpine js apps c css factorio font awesome images linux quick modals sqlite site bugs site updates slick slider sliders testing windows apps apache api apps asp bat bootstrap bootstrap templates charts cookies core css css filters css grid design elements docker domains emoji fancybox fonts foundation framework gimp git html icons ideas image formatting images javascript javascript functions jquery js linux mac misc modals mysql nginx node php php errors php function php functions php simple html dom pi400 python react regex sections simple_html_dom simplepie php site bugs site documentation slick slider sql sqlite ssh sublime svg svg css templates tools virtual box vscode vue webdev windows windows 11 windows commands wordpress