Один добрый хабрапользователь Andex написал на Хабре статью о том, как на свой сайт экспортировать статистику с Google.Analytics. Подробности читайте в соответствующем блоге. Все замечательно работает (на момент 30 ноября 2008 года), и хорошо выглядит даже дефолтовый набор отчетов, который автор делал для себя. Но есть один недостаток для меня, который я исправил.
Но обо всем по порядку. Для начала прочитайте статью Andex’а и «заведите» статистику на web-сервере.
Если во время установки что-то не заработало, читайте комментарии.
У меня возникла такая проблема: если сходу ошибиться с паролем, то система обратиться к гуглу с неправильным паролем столько раз, сколько отчетов экспортируется. В дефалтном варианте это 8 раз. После этого гугл естественно будет требовать от вас ввода каптчи, чтобы убедиться, что вы не подбираете пароли. А возвращать в этом случае он будет временный редирект (Temporary redirect). Его вы в логе и увидите, при этом stat.php будет вывалить нутисы про Undefined index’ы. В этом случае, надо подождать минут 20, а потом повторно запросить статистику, и все будет хорошо :)
Что меня не устроило в дефалтовых отчетах? Только то, что графики по посетителям и по посещениям были разделены. Вместо того, чтобы на одном графике сделать 3 кривых, было сделано 2 графика по 2 кривых (посетители + просмотры, посещения + просмотры).
Я решил это исправить. Но исправить так, чтобы ковырять готовый код по минимуму для простоты и быстроты решения, и для совместимости с потенциальными будущими апдейтами.
Итак, что нужно сделать? Нужно составить новый сводный отчет (*.csv), в котором будут храниться объединенные данные по посетителям, посещениям и просмотрам. И нужно сделать *settings.xml-файл, в котором будут настройки визуализации нового графика.
Генерацию сводного отчета я вынес в функцию. Она берет два отдельных отчета и составляет из них общий:
function makeFull($postfix = '') { $fvisits = fopen($GLOBALS["path"] . "visits$postfix.csv", 'r'); $fvisitors = fopen($GLOBALS["path"] . "visitors$postfix.csv", 'r'); $ffull = fopen($GLOBALS["path"] . "full$postfix.csv", 'w'); while (!feof($fvisits)) { $visits_line = explode(';', fgets($fvisits)); $visitors_line = explode(';', fgets($fvisitors)); if (count($visits_line) == 3 && count($visitors_line) == 3) { // новая строка = дата ; посетители ; посещения ; показы & \n $new_line = $visitors_line[0] . ';' . $visitors_line[1] . ';' . $visits_line[1] . ';' . $visitors_line[2]; fputs($ffull, $new_line); } } fclose($fvisits); fclose($fvisitors); fclose($ffull); }
Эту функцию надо поместить в stat.php (например в конец). Вызвать ее нужно 2 раза (отчет за все время и отчет за последние 3 месяца):
makeFull(); makeFull('_3');
Это нужно делать после генерации соответствующих отчетов, т.е. проще всего дописать в конце файла stat.php.
Далее из файлов visitors_3_settings.xml и visitors_settings.xml я сделал копии (full_3_settings.xml и full_settings.xml) и добавил в настройках графиков новый график-кривую (новую секцию <graph gid=»3″></graph>).
Осталось подредактировать index.php, чтобы новые графики отображались вместо старых. В index.php вместо кода первых четырех графиков появился следующий код:
<div id="visitors" align="center" style="padding-bottom:80px"> <strong>Для просмотра сожержимого, установите последнюю версию Adobe Flash Player</strong> </div> <script type="text/javascript"> // <![CDATA[ var so = new SWFObject("amline.swf", "amline_chart", "600", "350", "8", "#FFFFFF"); so.addVariable("path", "./amline/"); so.addVariable("settings_file", escape("full_settings.xml?<?php echo mktime();?>")); so.addVariable("data_file", escape("full.csv?<?php echo mktime();?>")); so.addVariable("preloader_color", "#BBBBBB"); so.write("visitors"); // ]]> </script> <div id="visitors_3" align="center" style="padding-bottom:80px"> <strong>Для просмотра сожержимого, установите последнюю версию Adobe Flash Player</strong> </div> <script type="text/javascript"> // <![CDATA[ var so = new SWFObject("amline.swf", "amline_chart", "600", "400", "8", "#FFFFFF"); so.addVariable("path", "./amline/"); so.addVariable("settings_file", escape("full_3_settings.xml?<?php echo mktime();?>")); so.addVariable("data_file", escape("full_3.csv?<?php echo mktime();?>")); so.addVariable("preloader_color", "#BBBBBB"); so.write("visitors_3"); // ]]> </script>
Вот и все. Теперь страница статистики (index.php) выглядит примерно так:
Скачка готовых файлов.
Мой мод вывода статистики затронул файлы из пакета statga от Andex’а. Изменения производились в версии statga 2.0.1. Не каснулись пакета только 2 новых файла: full_3_settings.xml и full_settings.xml. Их вы можете смело брать из моего пакета в любом случае. Как модернизировать файлы пакета statga для изменения визуализации написано выше. Так что, если Andex обновит версию, вы сможете внести правки вручную. Если нет, можно использовать готовые файлы версии 2.0.1: