Google Analytics в Kohana

kohanaРечь пойдёт не об установке счётчика GA на сайт. Тут и писать нечего. Гораздо более интересно наблюдать за статистикой из своего движка.

С одной стороны я видел такую фишку когда разбирал PyroCMS и ещё пару других CMS на CodeIgniter. С другой стороны как раз один заказчик попросил такую штуку к себе на сайт.

Взял я исходники PyroCMS, присовокупил первоисходные примеры отсюда http://www.swis.nl/ga/ и поработал напильником. Получилось симпатичное поделие, которым и спешу поделиться.

Скачать тут (всего скачали раз)

Думал оформить файлы в виде модуля, но не решился. Уж больно мелко. Или стоит?

По приложенным файлам стоит дать небольшую справку

ga-kohana
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.

Не обошлось без говнокода. Ну не знаю я как лучше написать такой блок команд!

        // 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. Явно я их в этом блоке не цепляю. Оставляю это вам.

Вместо заключения
=====================
Вообще этот код выглядит выдранным из контекста. Да так и есть. Так что наверное будет не так легко его использовать.

В любом случае, желаю удачи.

Google Analytics в Kohana: 5 комментариев

  1. Nijji

    Лучше использовать switch\case\default, вместо многократного if()

  2. altesack Автор записи

    @ Nijji:
    Тоже можно, но мне хотелось бы вообще свернуть все варианты в одну строчку. Видится что-то вроде

    $result = eval(‘$this->oAnalytics->’.$ga_query.’()’;

    Только вот не переношу eval

  3. altesack Автор записи

    Вау … Нашёл! Одна строчка заменяет 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();

  4. bvn

    А откуда берется $ga_query? Я так понял это часть сегмента?
    Тогда неплохо бы в маршруты добавить regex (getBrowsers|getReferrers|getSearchWords|getScreenResolution|getVisitors|getPageviews

  5. altesack Автор записи

    $ga_query — эта строка, которая просто задаётся ранее. И это не маршруты, да.

Комментарии запрещены.