Модуль analytics Kohana 3.3 для работы с google analytics API

Скачать модуль можно по ссылке снизу статьи.

Мне захотелось выводить количество просмотров статьи на странице этой статьи. Был вариант написать свой счётчик, который будет, учитывая cookies и IP, считать просмотры. Но этот вариант показался мне слишком громоздким по нескольким причинам:

  1. Может быть пользовательская накрутка путём удаление кукисов;
  2. Считать по ip не совсем точно. Например, на организации работают 500 человек и попадают на внешний мир через один единственный proxy (под одинаковым ip);
  3. Учитывать приход через определённое время. Если пользователь вернулся через сутки, наверное, это +1 просмотр?
  4. Ну и вообще не хотелось тратить на это мощь и без того дохленького сервера на shared хостинге. А также своё время.

У меня на сайте уже стоял счётчик google analytics. Его возможностями я и решил воспользоваться, а точнее, возможностями google analytics API.

Какие данные мы хотим получать от google analytics API?

Получать количество просмотров конкретной страницы (у каждого поста уникальный адрес). Идентификация по uri.

Поэкспериментировать с получением нужных данных с помощью gapi (google API) можно на Google Analytics Query Explorer

Модуль analytics для Kohana 3.3

Модуль имеет стандартную для фреймворка kohana структуру файлов/папок:

структура модуля kohana3.3-analytics

В принципе, модуль на данный момент совсем компактный. Основная его часть - эта сама библиотека gapi. Модуль можно было бы и не создавать, но я вынес код в отдельный модуль, т.к. в дальнейшем может быть расширение функционала.

Модуль имеет одну функцию для получения количества просмотров:

/**
 * Return count views per page.
 *
 * @param string $pageUri
 *   Page uri without http://.
 *   e.g.: ~^/information_.[a-z0-9]?/about.php$    #Regular Expression
 *   e.g.: /information_abc/about.php     #Equals
 * @param string $startDate
 *   Date format is 'Y-m-d'. e.g.: 2013-04-01.
 *
 * @return array
 *  `pageviews` as key
 *  `uniquePageviews` as key
 */
public function getCountPageViews($pageUri, $startDate = NULL)
{
    if (strpos($pageUri, '~') === 0) {
        // Regular Expression
        $filter = 'pagePath=' . $pageUri;
    }
    else {
        // Equals
        $filter = 'pagePath==' . $pageUri;
    }
    if (!$startDate)
        $startDate = date('Y-m-d', strtotime('1 month ago'));
    $this->_gapi->requestReportData(
        $this->_config['report_id'],
        array('visitorType'),
        array('pageViews', 'uniquePageviews'),
        NULL,
        $filter,
        $startDate
    );
    $pageviews = 0;
    $uniquePageviews = 0;
    foreach ($this->_gapi->getResults() as $result) {
        $pageviews += $result->getPageviews();
        $uniquePageviews += $result->getUniquePageviews();
    }
    return array(
        'pageviews' => $pageviews,
        'uniquePageviews' => $uniquePageviews,
    );
}
Модуль писался и тестировался под ko3.3.0, но может быть использован и на более ранних версиях. При возникновении каких-либо проблем, welcome в комментарии.

Применение фильтров в google API:

в функции getCountPageViews() применяется фильтр по pagePath.

Детектирование по pagePath может быть двумя способами:

1. Точное совпадение (Equals, '==').

Например, фильтру filters=ga:pagePath==/information/about.php будет соответствовать только адрес:

/information/about.php

Или же  /information/ABOUT.php, регистр значения не имеет.

И не соответствовать адреса:

  • /bla-bla/information/about.php
  • /information/about.php?q=abc

2. Регулярное выражение (Regular Expression, '=').

Например, фильтру filters=ga:pagePath==~^/information/about.php.* будут соответствовать адреса, начало которых совпадает с /information/about.php. Т.е. адрес /information/about.php?q=abc в данном случае будет соответствовать фильтру.

ga:pagepath=~^/posts/.*  - на данном сайте это будут страницы всех постов, посты по тегу, а также страницы добавления и редактирования постов.

ga:pagepath=~^/posts/by_tag/.*ajax.*  - страницы постов по тегам, где в названии тега обязательно присутствует 'ajax'.

Скачать модуль analytics для kohana 3.3 можно в моём репозитории на github:

Модуль kohana3.3-analytics

 

UPD: с конца сентября 2015г. модуль не работает, т.к. google изменил доступ к API.

Будет обновлено.

 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться