Hallo zusammen nach meinem Urlaub!
Ich hatte eine super Zeit in Ägypten, und Schnorcheln ist so ziemlich der größte Spaß, den ich mit meinen Hosen an bis jetzt gehabt habe.
Doch nun zum Wichtigen:
Während meines Urlaubs habe ich ja das Internet absichtlich vernachlässigt, und so auch auf meiner Soup nichts neues für euch gepostet. Das ist hiermit zum Glück auch vorbei, und es hat schon wieder massenhaft Updates gegeben.
Was mich an der Soup immer schon störte (und das ist so ziemlich das Einzige, ich finde Soups wirklich super!), war, dass es keine eingebaute Möglichkeit gibt, den Traffic zu tracken. Vielleicht habt ihr auf manchen Soups die Flaggentafeln oder einen primitiven Besuchercounter gesehen, ich als Zahlenliebhaber habe damit allerdings zu wenig gehabt. Aus diesem Grund bastelte ich mir schon vor einiger Zeit ein Google Analytics Tracking ein.
Das ist für 0815-User nicht ganz einfach, jedoch gibt es die Möglichkeit, in das Beschreibungsfeld sowohl CSS als auch Javascripts einzufügen (ich weiß, das ist wahrscheinlich nicht so vorgesehen, aber wenn es geht nütze ich es gerne aus). Das Standardtracking ist hiermit schnell installiert, einfach den von Google vorgefertigten Trackingcode unter der Beschreibung einfügen. Am folgenden Bild sieht man, wo man (wenn man eingeloggt ist) hinklicken muss.
Der Trackingcode ist ja bekannt:
1 2 3 4 5 6 7 8 9 10 |
<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "<a href="https://ssl/" target="_blank">https://ssl</a>." : "<a href="http://www./" target="_blank">http://www.</a>"); document.write(unescape("%3Cscript src='" + gaJsHost + "<a href="http://google-analytics.com/ga.js" target="_blank">google-analytics.com/ga.js</a>' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try{ var pageTracker = _gat._getTracker("UA-xxxxxx-x"); pageTracker._trackPageview(); } catch(err) {} </script> |
Mein Problem damit ist, dass ich sowohl meinen Blog, als auch meine Soup über den gleichen Tracker laufen lassen möchte. Mit dem Standardtracking wird jeder Aufruf von http://soup.fischi.cc und http://www.fischi.cc im Analytics als „/“ gezählt, man kann also nicht unterscheiden, ob Soup oder Blog.
Aus diesem Grund habe ich die Zeile
1 |
pageTracker._trackPageview(); |
aus dem Standard Google Tracking entfernt, und ein kleines Codeschnipsel geschrieben, das mir die aktuelle Url ausliest, von dort http://soup.fischi.cc entfernt, und davor soup hinschreibt.
1 2 |
trackingUrl = 'soup' + location.href.substr(21, (location.href.length - 21)); pageTracker._trackPageview(trackingUrl); |
So weit so gut, im Analytics sind nun alle Visits durch /soup/ gekennzeichnet. Die Zahl 21 kommt von der länge meiner Url, inklusive http://, also bei Bedarf anpassen. Auch die Permalinks auf die einzelnen Einträge sind nun durch /soup/post/id/title im Analytics aufzufinden.
Bis hierhin war das noch nicht sehr einfallsreich. Und ich war mit meinem Tracking immer noch nicht zufrieden, denn ich konnte nie sehen, wie weit jemand auf meiner Soup gescrollt hat, da dies ja nur ein einzelner Seitenaufruf ist. Das ist für mich der einzige Grund, das endlose Scrollen zu deaktivieren – aber es ist für den User nerviger. Weniger Besucher riskieren, um pro User mehr Pageviews zu haben? Nein Danke. Ich merke es selbst oft, wenn ich andere Soups oder Tumblrseiten anschaue, dass ich da nicht so viel anschaue, wie ich es mit dem gemütlichen Scrollen machen würde.
Deshalb wird es jetzt lustiger: Man baut sich hier noch ein Script in das oben erwähnte Feld ein, in dem eine Funktion überwacht, ob der Benutzer scrollt, und dann überprüft, ob sich die Seitenhöhe verändert hat. Falls ja, sind weitere Posts geladen worden, also tracke ich einen Pageview mit /soup/reload_xx/. xx steht für die Zahl der Reloads (bin schon gespannt, was die höchste sein wird 😉 )
Die Function pageHeight() ist aus den Stammfunktionen der Soup übernommen (die machen das ziemlich ähnlich), fi_old_height ist die Überprüfungsvariable. Beim ersten Aufruf ist fi_old_height noch nicht initialisiert, deshalb wird hier der reload_counter gesetzt, und der erste Pageview gezählt (mit der neuen trackingUrl).
Bei jedem Neuladen von Posts greifen die if-Abfragen, und eine reloadTrackingUrl wird definiert.
Ich weiß, dass der Code hier nicht sehr schön ist, und dass ich das traditionelle Google Tracking verwende, aber das hat seine Gründe: ich benötige in Verbindung mit einem mir unbekannten System ein möglichst kompatibles Tracking (aus diesem Grund sind auch die Scripts so beibehalten, wie Google sie vorgibt), und im Beschreibungsfeld der Soup werden einige Zeichen nicht angenommen, wie etwa <, >, & usw. Dadurch muss ich verschachtelte unschöne if-Abfragen durchführen. Die Zeile mit getPageHeight()-10 kommt davon, dass die Soup während dem Laden eine Meldung einblendet, die die Höhe der Seite ebenfalls verändert, und zwei Trackings für einen Reload muss ich für mich persönlich nicht machen, da ich meine Statistiken ja nicht fälschen mag. Es gibt genug andere Leute, für die ich das schon mache.
Hier ist nun der gesamte Tracking Code, der eingefügt werden muss:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-XXXXXXX-X"); } catch(err) {} </script> <script type="text/javascript"> function getPageHeight(){ if($('posts')){ var p=$('posts'); return p.getHeight()+p.offsetTop; } } Event.observe(window, 'scroll', function() { if(typeof fi_old_height == 'undefined') { fi_old_height = getPageHeight(); reload_counter = 0; trackingUrl = 'soup' + location.href.substr(21, (location.href.length - 21)); pageTracker._trackPageview( trackingUrl </em>); } if (getPageHeight() != fi_old_height) { if ((getPageHeight()-10) != fi_old_height) { fi_old_height=getPageHeight(); reloadTrackingUrl = trackingUrl + 'reload_' + ++reload_counter + '/'; pageTracker._trackPageview( reloadTrackingUrl ); } } }); </script> |
Have Fun!
Zum Schluss gibts noch ein paar kleine Impressionen aus meinem Urlaub. Und die Deaktivierung des SocialMedia Plugins. Falls jemand etwas empfehlen will, weiß er wie es geht, und ich habe noch kein Plugin gefunden, das mir wirklich gut passt.
See you soon!
grundsätzlich eine tolle idee. danke für den tipp. ich setze piwik ein, so bekommt niemand anderer, wie z.b. google, die daten. zusaetzlich werden noch automatisch die ips anonymisiert. na bin mal gespannt wieviele leute meine suppe betrachten 😉
aber gehen tuts 🙂