Ziel des ganzen ist, sich irgendwo zwischen WBStats und Piwik zu positionieren.
https://github.com/webbird/bcstats_for_BlackCatCMS
Einbindung im Frontend
Die Einbindung erfolgt wahlweise über ein Droplet oder durch Aufnahme eine Codeschnipsels im Template oder Seitenkopf/-fuß. Hierbei kann bestimmt werden, ob im Frontend eine kleine Statistik ausgegeben werden soll oder nicht. (Parameter 'stats') Außerdem gibt es zwei Darstellungsvarianten, nämlich vertikal oder horizontal (siehe Screenshots weiter unten).
Derzeitiger Droplet-Code (kann sich noch ändern):
Code: Alles auswählen
[[cat_counter?stats=1&display=horizontal]]
Code: Alles auswählen
<?php
require CAT_PATH.'/modules/BCStats/inc/Tracker.php';
CAT_Helper_Page::addCSS(CAT_URL.'/modules/BCStats/css/frontend.css');
echo BCStats_Tracker::track(true,'horizontal');
?>
Um einen "stillen" Counter einzubauen, folgenden Code verwenden:
Code: Alles auswählen
<?php
require CAT_PATH.'/modules/BCStats/inc/Tracker.php';
BCStats_Tracker::track();
?>
Da es in vielen Ländern - auch in Deutschland - nicht so ganz legal ist, die IP zu speichern (das ist umstritten, lassen wir es an dieser Stelle bitte einfach dabei), verwendet das Modul eine Session als Reload-Sperre. Der Weg des Besuchers - also welche Seiten er aufgerufen hat - wird ebenfalls nicht verfolgt. Das heißt, nur der erste Zugriff wird registriert, mitsamt der aufgerufenen Seite, und das war's.
Da die IP-Adresse nicht gespeichert wird, wird mit Hilfe von GeoLite2 versucht, Land, Provinz und Stadt zu ermitteln, bevor der Zugriff protokolliert wird. Informationen zum Browser werden erst später aus den Protokolldaten extrahiert, beim Zugriff selbst wird nur der User Agent String ausgelesen und gespeichert. Anmerkung: Derzeit tendiere ich dazu, nur das Land zu ermitteln und zu speichern, siehe unten.
Wichtige Info dazu: Alle diese Informationen können vom Benutzer verfälscht werden, sind also nicht zuverlässig. Das Problem haben aber alle einschlägigen Tools.
Aus dem User Agent lassen sich bei der Auswertung des Protokolls auch Suchmaschinen, Spider etc. identifizieren, auch dies aber wiederum nicht wirklich zuverlässig. Vor allem Spambots oder andere Schädlinge werden sich in der Regel nicht als solche zu erkennen geben. Seriöse Suchmaschinen lassen sich aber gewöhnlich auch als solche erkennen. (Wobei sich natürlich ein Spambot auch wieder als seriöse Suchmaschine tarnen kann...)
Derzeit gibt es zwei Varianten der Frontend-Ausgabe: Vertikal und horizontal. Die Darstellung ist erst mal nur ganz rudimentär, über die Templates und das CSS kann man sich das später ohnehin so anpassen, wie man es mag. Admin Tool
Beim Aufruf des Admin-Tools oder wahlweise auch per Cronjob wird das Protokoll ausgewertet und für die Erstellung von Statistiken aufbereitet. Welche Ansichten es genau geben wird, weiß ich noch nicht; für Vorschläge bin ich da offen, soweit die erfaßten Daten das hergeben. Ein paar erste Beispiele weiter unten. Da die Darstellung auf Widgets basieren wird, ist es später möglich, eigene Erweiterungen zu bauen bzw. die Ansichten so zu ändern, wie man es haben möchte.
Bibliotheken
Bisher kommen folgende Bibliotheken zum Einsatz:
GeoLite2 - zum Ermitteln der Herkunft des Besuchers (Land) aus der IP-Adresse
Browscap - zum Auslesen von Informationen aus dem UserAgent
Kartograph (JS) - zur Darstellung der Verteilung der Besucherzahlen auf eine Weltkarte
ChartJS - zur Darstellung von Charts
jQuery UI - Accordion Plugin zur Darstellung der Details (z.B. Browser ist Firefox, Gesamtzahl steht auf dem Panel, per Accordion kann man dann das Panel öffnen und die Verteilung auf die FF-Versionen ansehen)
Für ChartJS plane ich ein eigenes Modul (und einen Helper), da es sicherlich auch außerhalb dieses Statistik-Moduls interessant ist. Die anderen werden vermutlich mit dem Statistikmodul geliefert. Wer sowas dann für eigene Module benutzen will, muß sie halt selbst mitliefern oder CDN benutzen.