Речь пойдёт не об установке счётчика GA на сайт. Тут и писать нечего. Гораздо более интересно наблюдать за статистикой из своего движка.
С одной стороны я видел такую фишку когда разбирал PyroCMS и ещё пару других CMS на CodeIgniter. С другой стороны как раз один заказчик попросил такую штуку к себе на сайт.
Взял я исходники PyroCMS, присовокупил первоисходные примеры отсюда http://www.swis.nl/ga/ и поработал напильником. Получилось симпатичное поделие, которым и спешу поделиться.
Скачать тут (всего скачали 552 раз)
Думал оформить файлы в виде модуля, но не решился. Уж больно мелко. Или стоит?
По приложенным файлам стоит дать небольшую справку

ga-kohana/config/ga.php
=================
Это настройки. Тут нужно прописать ваш пароль от Гугл-аналитикса. Шифрования нет, поэтому если есть вероятность утечки – вешайте аналитику на отдельную учётную запись, не связанную с другими сервисами Google.
Кроме логина/пароля нужно указать GA-профиль, а так же время жизни кеша в секундах. Кеш нужен, чтобы не дёргать GA каждые пять минут. Используется простой кеш, встроеный в ядро Kohana.
ga-kohana/classes/analytics.php
=================
Это главная библиотека, нужная для работы с GA. Она не моя, я её скачал с http://www.swis.nl/ga/. Правда исходная библиотека немного старая, и я её подновил.
Дело в том, что интерфейс GA незначительно поменялся. Для получения измерения “день” теперь нужно использовать ‘ga:date’, а не ‘ga:day’, как раньше. Это изменение уже есть в моём архиве, но пока нет в первоисточнике.
ga-kohana/classes/controller/ga.php
=================
Собственно контроллер. Содержит три метода –
- action_index – собственно вывод результатов
- graph – Вывод маленького графика, используется при построении представления
- ga_query – собственно обращение к данным. Эта функция мне понадобилась, чтобы сохранять в кеш ответы от GA.
Не обошлось без говнокода. Ну не знаю я как лучше написать такой блок команд!
1 2 3 4 5 6 7 8 9 10 11 12 13 | // Execute the query if ($ga_query=="getBrowsers") $result = $this->oAnalytics->getBrowsers(); if ($ga_query=="getReferrers") $result = $this->oAnalytics->getReferrers(); if ($ga_query=="getSearchWords") $result = $this->oAnalytics->getSearchWords(); if ($ga_query=="getScreenResolution") $result = $this->oAnalytics->getScreenResolution(); if ($ga_query=="getVisitors") $result = $this->oAnalytics->getVisitors(); if ($ga_query=="getPageviews") $result = $this->oAnalytics->getPageviews(); |
Есть предложения, как написать это красивее?
ga-kohana/view/ga.php
=================
Это представление. Вообще его можно делать на ваше усмотрение. Это просто более или менее удобный способ показа данных. И вообще интерфейс GA даёт очень много возможностей. Всё ограничено только вашей фантазией.
Внимание: В моём представлении используются jquery и jquery.flot. Явно я их в этом блоке не цепляю. Оставляю это вам.
Вместо заключения
=====================
Вообще этот код выглядит выдранным из контекста. Да так и есть. Так что наверное будет не так легко его использовать.
В любом случае, желаю удачи.
Посты по теме:
RSS-подписка
Лучше использовать switch\case\default, вместо многократного if()
@ Nijji:
Тоже можно, но мне хотелось бы вообще свернуть все варианты в одну строчку. Видится что-то вроде
$result = eval(’$this->oAnalytics->’.$ga_query.’()’;
Только вот не переношу eval
Вау … Нашёл! Одна строчка заменяет 12
$result = $this->oAnalytics->$ga_query();
// if ($ga_query==”getBrowsers”)
// $result = $this->oAnalytics->getBrowsers();
// if ($ga_query==”getReferrers”)
// $result = $this->oAnalytics->getReferrers();
// if ($ga_query==”getSearchWords”)
// $result = $this->oAnalytics->getSearchWords();
// if ($ga_query==”getScreenResolution”)
// $result = $this->oAnalytics->getScreenResolution();
// if ($ga_query==”getVisitors”)
// $result = $this->oAnalytics->getVisitors();
// if ($ga_query==”getPageviews”)
// $result = $this->oAnalytics->getPageviews();
А откуда берется $ga_query? Я так понял это часть сегмента?
Тогда неплохо бы в маршруты добавить regex (getBrowsers|getReferrers|getSearchWords|getScreenResolution|getVisitors|getPageviews
$ga_query – эта строка, которая просто задаётся ранее. И это не маршруты, да.