!!!ВНИМАНИЕ. Информация на сегодняшний день не актуальна!!!
Для 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, его можно использовать на любом сайте!