!!!ВНИМАНИЕ. Информация на сегодняшний день не актуальна!!!
Для SEO анализа своих сайтов очень удобно обращаться к Гугл Аналитике и Яндекс Метрике. Иногда может понадобится просматривать основную информацию прямо с сайта. Например показывать ежедневную статистику своим администраторам, а может и всем посетителям.
Для отображения Яндекс Метрики нам понадобится получить секретный токен. Для этого сначала нужно создать новое приложение в аккаунте где находится наш счетчик. Заполните поля "Название", "Описание" и загрузите картинку. Эти поля требуются только для вас. В поле "Права" выделите "Яндекс.Метрика" и поставте галочку на "Получение статистики, чтение параметров своих и доверенных счётчиков". В поле "Callback URL" нам требуется нажать "Подставить URL для разработки", в поле ввода URL появится ссылка "https://oauth.yandex.ru/verification_code".Нажимаем "Сохранить".
Теперь нам потребуется скопировать поле "ID" и вставить его в конец ссылки вместо X.
https://oauth.yandex.ru/authorize?response_type=token&client_id=X
Полученую ссылку откройте в браузере. Затем нажмите "Разрешить" и увидите зоветный токен.
И последнее что потребуется это номер счетчика Яндекс Метрики.
Приступим к самому скрипту! Создайте в корневом каталоге сайта папку yandex_metrika. В папке создайте файл APImetrika.php. Поместите указанный ниже код со своими значениями $token и $counter_id.
<?php
class APImetrika{
private $token = "токен";
private $counter_id = "номер счетчика";
private $url_api = "https://api-metrika.yandex.ru/";
public function get_traffic($date1, $date2){
return $this->get_data(
$this->url_api.
"stat/traffic/summary.json?id=".
$this->counter_id.
"&pretty=1".
"&date1=".$date1.
"&date2=".$date2.
"&oauth_token=".
$this->token
);
}
public function get_sources($date1, $date2){
return $this->get_data(
$this->url_api.
"stat/sources/sites.json?id=".
$this->counter_id.
"&pretty=1".
"&date1=".$date1.
"&date2=".$date2.
"&oauth_token=".
$this->token
);
}
public function get_phrases($date1, $date2){
return $this->get_data(
$this->url_api.
"stat/sources/phrases.json?id=".
$this->counter_id.
"&pretty=1".
"&date1=".$date1.
"&date2=".$date2.
"&oauth_token=".
$this->token
);
}
public function get_popular($date1, $date2){
return $this->get_data(
$this->url_api.
"stat/content/popular.json?id=".
$this->counter_id.
"&pretty=1".
"&date1=".$date1.
"&date2=".$date2.
"&oauth_token=".
$this->token
);
}
private function get_data($url){
if($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = json_decode(
curl_exec($ch), true
);
curl_close($ch);
if(is_array($data)){
return $data;
}
}
return false;
}
}
?>
Это запросы API Яндекса.
Создайте index.php в той же папке и поместите следующий код:
<p><?php
require_once("APImetrika.php");
$obj = new APImetrika();
$today = $obj->get_traffic( //сегодня
date("Ymd"),
date("Ymd")
);
$last = $obj->get_traffic( // вчера
date("Ymd", time() - 86400),
date("Ymd", time() - 86400)
);
$lastm = $obj->get_traffic( // последний месяц
date("Ymd", time() - 30 * 86400),
date("Ymd")
);
$lasty = $obj->get_traffic( // год
date("Ymd", time() - 365 * 86400),
date("Ymd")
);
$todaySources = $obj->get_sources( // сегодня переходы с сайтов
date("Ymd"),
date("Ymd")
);
$lastSources = $obj->get_sources( // вчера переходы с сайтов
date("Ymd", time() - 86400),
date("Ymd", time() - 86400)
);
$todayPhrases = $obj->get_phrases( // сегодня переходы с сайтов
date("Ymd"),
date("Ymd")
);
$lastPhrases = $obj->get_phrases( // вчера переходы с сайтов
date("Ymd", time() - 86400),
date("Ymd", time() - 86400)
);
$lastyPopular = $obj->get_popular( // год для топ-30
date("Ymd", time() - 365 * 86400),
date("Ymd")
);
?>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="stats-title"><i class="fa fa-y-combinator"></i> Сегодня</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-users"></i>
</div>
<div class="count"><?php echo($today["totals"]["visitors"]);?></div>
<div class="title">Посетителей</div>
<div class="desc" title="Посетители пришедьшие с разных компьютеров или устройств.">Уникальные посетители</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user"></i>
</div>
<div class="count"><?php echo($today["totals"]["visits"]);?></div>
<div class="title">Визитов</div>
<div class="desc" title="Все заходы на сайт">Всего заходов</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-eye"></i>
</div>
<div class="count"><?php echo($today["totals"]["page_views"]);?></div>
<div class="title">Просмотров</div>
<div class="desc" title="Просмотров страниц">Переходы по сайту</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user-plus"></i>
</div>
<div class="count"><?php echo($today["totals"]["new_visitors"]);?></div>
<div class="title">Новые посетители</div>
<div class="desc" title="Посетители псетившие сайт впервые">Впервые на сайте</div>
</div>
</div>
<!-- Переходы с сайтов -->
<div class="animated flipInY col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-link"></i></div>
<div class="title">Переходы с сайтов</div>
<div class="desc"><span class="activ">Сегодня <span class="num_o"><?php echo ($todaySources['totals']['visits']);?></span></span></div>
<div class="desc">
<?php
for( $i = 0; $i <= 50; $i++ ) {
echo '<div>';
if ($todaySources['data'][$i]['url']){
$url = ($todaySources['data'][$i]['url']);
$host = parse_url( preg_match('#^https?://#',$url) ? $url : '<a href="http://'.$url">http://'.$url</a>, PHP_URL_HOST )
or die('Ошибка при конвертации домена!');
echo '<i class="fa fa-star"></i> ';
echo $host;
}
echo '</div>';
}
?>
</div>
</div>
</div>
<!-- Конец Переходы с сайтов -->
<!-- Поисковые фразы -->
<div class="animated flipInY col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-search"></i></div>
<div class="title">Поисковые фразы</div>
<div class="desc"><span class="activ">Сегодня <span class="num_o"><?php echo ($todayPhrases['rows']);?></span></span></div>
<div class="desc">
<?php
for ( $i = 0; $i <= 50; $i++ ) {
echo '<div>';
if ($todayPhrases['data'][$i]['phrase']){
echo '<i class="fa fa-tag"></i> ';
echo ($todayPhrases['data'][$i]['phrase']);
};
echo '</div>';
}
?>
</div>
</div>
</div>
<!-- Конец Поисковые фразы -->
</div>
<div class="row">
<div class="stats-title"><i class="fa fa-y-combinator"></i> Вчера</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-users"></i></i>
</div>
<div class="count"><?php echo($last["totals"]["visitors"]);?></div>
<div class="title">Посетителей</div>
<div class="desc" title="Посетители пришедьшие с разных компьютеров или устройств.">Уникальные посетители</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user"></i>
</div>
<div class="count"><?php echo($last["totals"]["visits"]);?></div>
<div class="title">Визитов</div>
<div class="desc" title="Все заходы на сайт">Всего заходов</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-eye"></i>
</div>
<div class="count"><?php echo($last["totals"]["page_views"]);?></div>
<div class="title">Просмотров</div>
<div class="desc" title="Просмотров страниц">Переходы по сайту</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user-plus"></i>
</div>
<div class="count"><?php echo($last["totals"]["new_visitors"]);?></div>
<div class="title">Новые посетители</div>
<div class="desc" title="Посетители псетившие сайт впервые">Впервые на сайте</div>
</div>
</div>
<!-- Вчерашние переходы с сайтов -->
<div class="animated flipInY col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-link"></i></div>
<div class="title">Переходы с сайтов</div>
<div class="desc"><span class="activ">Вчера <span class="num_o"><?php echo ($lastSources['totals']['visits']);?></span></span></div>
<div class="desc">
<?php
for ( $i = 0; $i <= 50; $i++ ) {
echo '<div>';
if ($lastSources['data'][$i]['url']){
$url = ($lastSources['data'][$i]['url']);
$host = parse_url( preg_match('#^https?://#',$url) ? $url : '<a href="http://'.$url">http://'.$url</a>, PHP_URL_HOST )
or die('Ошибка при конвертации домена!');
echo '<i class="fa fa-star"></i> ';
echo $host;
};
echo '</div>';
}
?>
</div>
</div>
</div>
<!-- Конец вчерашних переходов с сайтов -->
<!-- Вчерашние поисковые фразы -->
<div class="animated flipInY col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-search"></i></div>
<div class="title">Поисковые фразы</div>
<div class="desc"><span class="activ">Вчера <span class="num_o"><?php echo ($lastPhrases['rows']);?></span></span></div>
<div class="desc">
<?php
for ( $i = 0; $i <= 50; $i++ ) {
echo '<div>';
if ($lastPhrases['data'][$i]['phrase']){
echo '<i class="fa fa-tag"></i> ';
echo ($lastPhrases['data'][$i]['phrase']);
};
echo '</div>';
}
?>
</div>
</div>
</div>
<!-- Конец вчерашние поисковые фразы -->
</div>
<!-- Последние 30 дей -->
<div class="row">
<div class="stats-title"><i class="fa fa-y-combinator"></i> Последние 30 дей</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-users"></i>
</div>
<div class="count"><?php echo($lastm["totals"]["visitors"]);?></div>
<div class="title">Посетителей</div>
<div class="desc" title="Посетители пришедьшие с разных компьютеров или устройств.">Уникальные посетители</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user"></i>
</div>
<div class="count"><?php echo($lastm["totals"]["visits"]);?></div>
<div class="title">Визитов</div>
<div class="desc" title="Все заходы на сайт">Всего заходов</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-eye"></i>
</div>
<div class="count"><?php echo($lastm["totals"]["page_views"]);?></div>
<div class="title">Просмотров</div>
<div class="desc" title="Просмотров страниц">Переходы по сайту</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user-plus"></i>
</div>
<div class="count"><?php echo($lastm["totals"]["new_visitors"]);?></div>
<div class="title">Новые посетители</div>
<div class="desc" title="Посетители псетившие сайт впервые">Впервые на сайте</div>
</div>
</div>
</div>
<!-- Конец Последние 30 дей -->
<!-- Последнй год -->
<div class="row">
<div class="stats-title"><i class="fa fa-y-combinator"></i> Последнй год</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-users"></i>
</div>
<div class="count"><?php echo($lasty["totals"]["visitors"]);?></div></p>
<p><div class="title">Посетителей</div>
<div class="desc" title="Посетители пришедьшие с разных компьютеров или устройств.">Уникальные посетители</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user"></i>
</div>
<div class="count"><?php echo($lasty["totals"]["visits"]);?></div></p>
<p><div class="title">Визитов</div>
<div class="desc" title="Все заходы на сайт">Всего заходов</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-eye"></i>
</div>
<div class="count"><?php echo($lasty["totals"]["page_views"]);?></div></p>
<p><div class="title">Просмотров</div>
<div class="desc" title="Просмотров страниц">Переходы по сайту</div>
</div>
</div>
<div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
<div class="tile-stats">
<div class="icon"><i class="fa fa-user-plus"></i>
</div>
<div class="count"><?php echo($lasty["totals"]["new_visitors"]);?></div>
<div class="title">Новые посетители</div>
<div class="desc" title="Посетители псетившие сайт впервые">Впервые на сайте</div>
</div>
</div>
</div>
<!-- Конец Последнй год -->
<!-- топ 30 популярных страниц -->
<div class="row">
<div class="stats-title"><i class="fa fa-y-combinator"></i> Топ-30 страниц.</div>
<table class="footable">
<thead>
<tr>
<th>URL.</th>
<th data-hide="phone" style="width:5%;">Просмотры.</th>
<th data-hide="phone,tablet" style="width:5%;">Количество входов</th>
<th data-hide="phone,tablet" style="width:5%;">Количество выходов</th>
</tr>
</thead>
<tbody>
<?php
for ( $i = 0; $i <= 30; $i++ ) {
echo '<tr><td>';
echo '<a href="'.$lastyPopular['data'][$i]['url'].'" target="_blank">'.$lastyPopular['data'][$i]['url'].'</a>';
echo '</td><td>';
echo ($lastyPopular['data'][$i]['page_views']);
echo '</td><td>';
echo ($lastyPopular['data'][$i]['entrance']);
echo '</td><td>';
echo ($lastyPopular['data'][$i]['exit']);
echo '</td></tr>';
}
?>
</tbody>
</table>
</div>
<!-- Конец топ 30 популярных страниц -->
</div>
</div>
</div></p>
Вот и все осталось оформить CSS. В примере использована разметка Bootstrap и иконки FontAwesome.
Токен выдается на один год и его нужно обновлять.
Ниже можно скачать готовый скрипт с CSS файлами. Т.к. этот скрипт ни как не связан Joomla, его можно использовать на любом сайте!

