Версия для печати

Результаты Яндекс Метрики на сайте Joomla

Оцените материал
(2 голосов)

!!!ВНИМАНИЕ. Информация на сегодняшний день не актуальна!!!

   Для 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, его можно использовать на любом сайте!