Скачать модуль можно по ссылке снизу статьи.
Мне захотелось выводить количество просмотров статьи на странице этой статьи. Был вариант написать свой счётчик, который будет, учитывая cookies и IP, считать просмотры. Но этот вариант показался мне слишком громоздким по нескольким причинам:
- Может быть пользовательская накрутка путём удаление кукисов;
- Считать по ip не совсем точно. Например, на организации работают 500 человек и попадают на внешний мир через один единственный proxy (под одинаковым ip);
- Учитывать приход через определённое время. Если пользователь вернулся через сутки, наверное, это +1 просмотр?
- Ну и вообще не хотелось тратить на это мощь и без того дохленького сервера на shared хостинге. А также своё время.
У меня на сайте уже стоял счётчик google analytics. Его возможностями я и решил воспользоваться, а точнее, возможностями google analytics API.
Какие данные мы хотим получать от google analytics API?
Получать количество просмотров конкретной страницы (у каждого поста уникальный адрес). Идентификация по uri.
Поэкспериментировать с получением нужных данных с помощью gapi (google API) можно на Google Analytics Query Explorer
Модуль analytics для Kohana 3.3
Модуль имеет стандартную для фреймворка kohana структуру файлов/папок:
В принципе, модуль на данный момент совсем компактный. Основная его часть - эта сама библиотека 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, ); }
Применение фильтров в 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:
UPD: с конца сентября 2015г. модуль не работает, т.к. google изменил доступ к API.
Будет обновлено.
Комментарии 0