Google analytics
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist infoweb-internet-solutions/yii2-cms-analytics "*"
or add
"infoweb-internet-solutions/yii2-cms-analytics": "*"
to the require section of your composer.json
file.
Go to the Google developers console
Create a new project (or use an existing project)
Open the project
Go to 'API & Auth -> API's' and enable the 'Analytics API'
Go to 'API & Auth -> Credentials' and under 'OAuth' click 'Create new Client ID'
Choose 'Service account' and click 'Create client id'
Save the certificate to 'backend\assets\certificate\certificate.p12' (don't forget to rename the file)
Write down the 'private key's password' somewhere
Add the credentials to your backend params
return [
...
'analytics' => [
'developerKey' => '', // Public key fingerprints
'serviceAccountName' => 'xxx@developer.gserviceaccount.com', // Email address
'clientId' => 'xxx.apps.googleusercontent.com', // Client ID
],
];
Go to Google analytics, open your property and get your 'Profile ID'
(It is the number at the end of the URL starting with p: https://www.google.com/analytics/web/#home/a11345062w43527078pXXXXXXXX/)
Add the 'Profile ID' to your params
return [
...
'analytics' => [
...
'analyticsId' => 'ga:XXXXXXXX',
],
];
Add the serviceAccountName (xxx@developer.gserviceaccount.com) as a new user to your Analyics property
Create the alias '@google/api' in the bootstrap file in common/config like so:
Yii::setAlias('google/api', dirname(dirname(__DIR__)) . '/vendor/google/apiclient/src');
Import the translations and use category 'infoweb/analytics':
yii i18n/import @infoweb/analytics/messages
If you can't access the /tmp
folder on your server (shared hosting), change line 94 in vendor\google\apiclient\src\Google\
'directory' => dirname(Yii::getAlias('@webroot')) . '/runtime/Google_Client'
Once the extension is installed, replace the contents of backend/views/site/index.php
with the following:
<?php
use infoweb\analytics\Analytics;
$this->title = Yii::$app->name;
?>
<div class="site-index">
<div class="body-content">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?= Yii::t('app', 'Dashboard'); ?>
<span class="pull-right report-period">
<strong><?= Yii::$app->formatter->asDate(date('d-m-Y', strtotime('-1 month')), 'medium'); ?> - <?= Yii::$app->formatter->asDate(date('d-m-Y'), 'medium'); ?></strong>
</span>
</h1>
</div>
</div>
<div class="row">
<?= Analytics::widget(['dataType' => Analytics::TOTAl_SESSIONS]); ?>
<?= Analytics::widget(['dataType' => Analytics::TOTAL_USERS]); ?>
<?= Analytics::widget(['dataType' => Analytics::TOTAL_PAGE_VIEWS]); ?>
<?= Analytics::widget(['dataType' => Analytics::AVERAGE_SESSION_LENGTH]); ?>
</div>
<div class="row">
<?= Analytics::widget(['dataType' => Analytics::SESSIONS]); ?>
</div>
<div class="row">
<?= Analytics::widget(['dataType' => Analytics::VISITORS]); ?>
<?= Analytics::widget(['dataType' => Analytics::COUNTRIES]); ?>
</div>
</div>
</div>
Google Analytics Query Explorer 2
Google API Php Client
Developer Documentation
Google Charts