Отображение данных Google Analytics на сайте
Евгений, 13 февраля 2008
После появления на хабре странички с импортированной из Google Analytics статистикой, зародилась мысль сделать что-то похожее, но чтобы любой желающий мог более менее легко это использовать на своем сайте и настраивать под свои требования.
Update: Скрипт обновился и размещен на Google Code. Описание в статье Статистика на сайте.
Получение данных Google Analytics
К сожалению, для Google Analytics нет документированного API, поэтому информацию можно получить только экспериментальным путем или рассматривая соответствующие разработки. Я остановился на втором, за основу были взяты API Джо Тана для плагина WordPress Reports, и Google Analytics API для CakePHP. Второе не подходит в качестве базового решения, поскольку требует CakePHP знакомиться с которым пока желания нет, да и ставить фреймворк из-за простенького скрипта захочется не всем. В API от Джо я значительно упростил часть работающую непосредственно с GA, убрал лишние запросы и парсинг, которому в элементе отвечающем за загрузку делать нечего.
Обратите внимание, что для авторизации требуются логин и пароль Google аккаунта, хранить на хостинге данные основного аккаунта не всегда целесообразно и безопасно, возможно стоит создать аккаунт специально для таких целей и открыть на нем доступ к отчетам сайта.
Подготовка отчетов
Самый простой способ получить необходимые данных из XML это использовать функцию SimpleXMLElement->xpath(). Вся работа по выборке данных возлагается на функцию parse($file, $xpath, $callbackFunction = ''). Значение параметра $file достаточно очевидно — это имя XML файла с данными GA, параметр $xpath должен содержать описание необходимых данных на языке XPath, $callbackFunction имя функции вызываемой для каждого полученного элемента, чтобы получить данные требуемого формата, например, для удаления лишних пробелов.
Отображение данных
Пользователь должен сам выбирать как отображать полученные отчеты, поэтому подключение модулей экспорта максимально упрощено и для начала реализовано два модуля на основе amCharts и Google Chart т.е. с флешем и без. Изображения Google Chart загружаются и хранятся на сервере, чтобы избежать модификации страницы статистики каждый день, хотя это возможно и не оптимальный вариант.
Результаты работы можно посмотреть на примере страницы со статистикой этого сайта (используется amCharts), которая совсем не блещет после того как он месяц пролежал, и на представленном ниже графике отображающем ту же статистику с помощью Google Chart. Обратите внимание на столь любимый всеми отчет о ссылающихся блоггерах (или как его назвать даже не знаю), теперь он будет обновляться каждый день, хотя временно размещен в iframe, опять таки, чтобы не работать с базой данных CMS. Только вот блоггеров выявлять все равно придется просматривая статистику GA и добавляя в config.php новые URL.


Установка
Установить скрипт достаточно просто, скопируйте папку ga в корневую директорию сайта. Укажите свои данные для аккаунта Google и профиль сайта в файле config.php. Создайте в CMS страницу и перейдя в режим редактирования HTML, внедрите в нее flash или img графики. Подробнее о внедрении графиков amCharts можно узнать на сайте разработчика в разделе документация, с графиками в формате img и так все понятно. Пример готовой страницы, есть в папке со скриптами. Настройки графиков amCharts хранятся в папке settings, настройки графиков Google Chart задаются в скрипте converter.php.Теперь чтобы загрузить и подготовить данные для отображения нужно запустить файл site-name/ga/ga.php, а чтобы не беспокоиться об этом каждый день нужно запускать его с помощью cron или заменяющих его сервисов.
Хотелось бы услышать ваше мнение, нужен ли подобный скрипт, какие возможности вы хотели бы в нем увидеть, как оградить его от посторонних вмешательств. За бортом осталась статистика FeedBurner которою можно сюда включить, если это кого-нибудь заинтересует. Все заинтересовавшиеся подписывайтесь на RSS и ждите обновлений.

















Евгений 13 февраля, 2008 9:24 #
Ошибся в URL :(
ACID Jesus 13 февраля, 2008 12:29 #
Интересно конечно, но скорее только со стороны того, как вывести цифры посещаемости сайта скажем на кнопку (счётчик размеров 88х31) - просто графики посещаемости, а уж тем более по браузерам и т.д. я думаю никому из посетителей сайта не интересны... интересны бывают лишь цифры посещаемjсти/подписчиков/рейтинг в той или иной системе - но это лишь моё мнение ;)
Евгений 13 февраля, 2008 12:46 #
Ну какие графики показывать и показывать ли это в виде графиков, решать тому кто будет использовать скрипт. Браузеры я добавил, чтобы в примере были разные типы графиков.
Sam 13 февраля, 2008 13:13 #
Спасибо. Довольно полезная штука!
sunnybear 13 февраля, 2008 20:52 #
Хорошая вещь... только у меня не коннектится с сервера на GA, по timeout'у вылетает
Алексей 13 февраля, 2008 21:10 #
Поставил себе на сервер, все работает. Правда немного подправил для своих нужд.
Евгений 13 февраля, 2008 23:14 #
sunnybear, даже не знаю на сервере все загружается очень быстро до timeout`a там далеко. Нужно смотреть настройки php, возможно, отключено, что-то нужное (но тогда почему по таймауту а не с ошибкой), проверье доступен ли curl, и нет ли --disable-simplexml в Configure Command.
sunnybear 13 февраля, 2008 23:17 #
да нет, у меня сервер где-то не там, google-analytics не пингуется оттуда
baha 14 февраля, 2008 2:53 #
Было бы здорово, если можно было бы взять статистику по континентам (по карте).
Ilyuha 16 февраля, 2008 6:03 #
У меня почему-то ошибку выбивает
Fatal error: Call to undefined function curl_init() in /home/ilyuha/data/www/ilyuha.org/ga/curl.php on line 21Евгений 16 февраля, 2008 13:42 #
Значит не установлен curl, пока без него никак, позже будет возможность использовать сокеты.
Dewmas.net 17 февраля, 2008 11:51 #
спасибо за статью. давно искал
oqbo 20 февраля, 2008 8:31 #
Спасибо за совет! Попробую установить.
Евгений 20 февраля, 2008 9:50 #
Скоро выложу новую версию, с упрощенной установкой, feedburner`ом, добавлю гео-таргетинг, возможно удастся упростить создание и настройку отчетов.
Сергей В Темноте 20 февраля, 2008 15:15 #
Вытягивает вместо xml-ек файл с извинениями. Каждый раз. Что за хрень...
Евгений 20 февраля, 2008 15:34 #
Кто извиняется и за что, если не секрет.
К примеру, такое извинение:
скорее всего следствие ошибки в параметрах загружаемых отчетов, например, опечатки в параметре rpt, которую можно сразу и не заметить.
Сергей В Темноте 20 февраля, 2008 15:36 #
Да, извинения такие. Ничего не менял в архиве (кроме мэйл-пароль), потому странно. Сейчас буду копать.
Евгений 20 февраля, 2008 15:40 #
а id своего сайта вписали?
Сергей В Темноте 20 февраля, 2008 15:46 #
Вписал. Вот только что убрал все отчеты кроме одного, и перепроверил данные.
Сергей В Темноте 20 февраля, 2008 16:04 #
Странно. Беру урл, запрашиваемый скриптом - вытягиваю нормальный xml. Скрипт вытягивает извинения. Что за зохри моро...
Lexa 20 февраля, 2008 22:31 #
новшество, достойное внимание :)
skif_s 21 февраля, 2008 20:58 #
А вот у меня запускается через крон, который находится в другой директории, пришлось править файлы на предмет замены относительного пути на абсолютный.
Можно в конфиге добавить настройку абсолютного пути, чтоб лишний раз не мучиться?
Евгений 21 февраля, 2008 21:04 #
Уже сделано в новой версии скрипта, скоро выложу.
Carw 28 февраля, 2008 9:56 #
Отличное решение! Вот выше говорили, что не все посетителям будет интересно - это верно. Но можно же такую штуку сделать просто в CMS, чтобы администратору было видно.
caston 29 февраля, 2008 12:56 #
Дополнительное спасибо за amCharts.
До этого возился с пхп-генератором jpgraph.
Евгений 29 февраля, 2008 13:08 #
За amCharts спасибо не мне, а разработчику.
Обратите внимание, что этот скрипт обновился, новый скрипт и описание размещены на Google Code.
Saney 29 февраля, 2008 16:47 #
Было бы интересно вешать этот скрипт себе на сайт в открытый доступ и показывать еще такие данные:
- поисковые системы;
- топ 10-20 поисковых запросов;
- возможность посетителю выбрать самому диапазон дат статистики, или зашить в выпадающий список по месяцам.
Глобатор 3 марта, 2008 11:50 #
Большое спасибо! Несколько дней искал такую инфу. Сегодня буду пробовать.
Вопрос: как запускать файл site-name/ga/ga.php кроном?
Евгений 3 марта, 2008 16:32 #
Обновите скрипт, отсюда.
В cPanel есть раздел Cron Jobs, там все должно быть предельно понятно.
Заполнять примерно так:
Minutes — 15, Hours — 0, Остальное — *, Команда —
/usr/local/bin/php -q $HOME/public_html/ss/public/ss.php 2>$HOME/cron.log. Путь к файлам указать свои, подробнее не могу, нет у меня сейчас под рукой cPanel.Евгений 5 марта, 2008 15:38 #
Поправка к предыдущему комменту.
Скрипт нужно запускать под php5, т.е. если под php подразумевается php4 (что на хостингах бывает очень часто) то команда должна быть такая:
/usr/local/bin/php5 -q $HOME/public_html/ss/public/ss.php 2>$HOME/cron.logРоман 17 марта, 2008 21:39 #
я не понял, а можно ли вывести статистику без вордпресса??? так и не нашел какой файл надо запускать для этого...
Евгений 18 марта, 2008 10:43 #
Можно, вот пример полной статики, просто вставляете это на страницу и все, ничего дополнительно вызывать не нужно, но при этом нельзя выводить текстовые отчеты.
Читайте обновленную статью там написано как статистика встраивается в CMS.
Роман 18 марта, 2008 14:02 #
директория только такая? http://new/ss/
поместил в /stats/ здесь изменил пути: http://designformasters.info/stuff/google-analytics-stats/static.txt не работает..
Евгений 18 марта, 2008 14:31 #
Я не совсем верно написал в предыдущем комменте, что ничего вызывать не нужно, это чтобы показать данные ничего вызывать не нужно если использовать код из примера.
Но прежде чем показать, данные нужно получить, а для этого нужно вызвать
/ss/public/ss.phpчерез браузер (подходит для первого запуска, отладки и если cron не доступен) или/ss/main.phpчерез cron.После запуска указанного файла, данные будут записаны в папку /ss/public/data и для их отображения можно будет использовать код из примера.
Пути, конечно, свои.
Роман 18 марта, 2008 22:35 #
вызывал, данные почему-то не сохраняются (папка /ss/public/data/ пуста, права на запись есть). в общем вот что получилось:
http://www.e-stal.ru/stats.html
Евгений 18 марта, 2008 23:00 #
Посмотрел, скрипт не отрабатывает до конца (если бы работал он бы писал, что в какой файл сохранено и т.д.), смотрите в
ss/logs/error.log, у вас на сервере ошибки не отдаются.С ошибочными данными для авторизации в GA будет что-то типа:
Fatal error: Uncaught exception 'Exception' with message 'Your login and password don't match.Нужно бы это, конечно, отлавливать, и выдавать соответствующее сообщение, но это уж как набереться обновлений достаточно, тогда все поправлю.
Если, что-то другое пришлите лог через контактную форму (предварительно проверив).