Deutschland United States United Kingdom
ContentLion - Open Source CMS

QA Analytics

QA Analytics

"Für die Einbindung von Google Analytics, Piwik oder anderen Trackingsysteme."

Code: http://code.contentlion.de/Plugin+Analytics/

Autor: kim88

Mein Feedback:

- Auf dem Dashboard bekomme ich nur "plugin_analytics_widget" angezeigt. Hast du evtl. vergessen das Template einzuchecken?
- Was ist, wenn du den Ordner der Trackingcodes wg. zu wenig Rechte nicht anlegen kannst?
- In deinem Plugin ist leider eine große Sicherheitslücke. Man kann in den Dateien jeden beliebigen Code speichern => Kommst du aufs Dashboard, wenn dein Widget aktiv ist, hast du Vollzugriff auf die Datenbank und die Dateien.
- Gibst du die Trackingcodes eigentlich abhängig vom Ordner aus? Sprich ich mache in einen Unterordner einen neuen Code dazu, wird der dann auch nur im Unterordner angezeigt? Andernfalls würde ich einen normalen Seitentyp dem Widget vorziehen.

Ich würde dir raten hier die Sachen in die Datenbank zu schreiben. Das ist zum einen sicherer, weil du nicht die Dateien includest und zum anderen auch einfacher, sobald du deine Installation auf mehrere Nodes laufen lässt (weil die Verzeichnisse dann nicht synchron sein müssen)


Da das (glaube ich) das erste Plugin ist, was ich von dir checke, wollte ich nochmal sagen, dass das Feedback nicht böse gemeint ist. Es soll einfach nur dafür sorgen, dass die Qualität unserer Plugins einigermaßen stimmt und so bekommst du nebenbei noch ein paar Tipps an die Hand, wie du auch den Code für deine privaten Projekte optimieren kannst ;-)

- Auf dem Dashboard bekomme ich nur "plugin_analytics_widget" angezeigt. Hast du evtl. vergessen das Template einzuchecken?


öhhhm? Wahrscheinlich schon, weil ich davon zum ersten mal höre :D. Ich habe beim erstellen des Widget eigentlich "abgeschrieben" beim "pagelistwidget" Plugin.

Folgende Dinge sind da in der "activate.php

Quellcode

1
2
3
WidgetController::register("AnalyticsWidget","AnalyticsWidget","analytics/analyticswidget.php");
$row = DataBase::Current()->ReadField("SELECT IFNULL(MAX(row),0) + 1 FROM {'dbprefix'}dashboards WHERE col = 3");
DataBase::Current()->Execute("INSERT INTO `{'dbprefix'}dashboards` (alias,col,row,path) VALUES ('admin/home', 3, ".$row.", 'analytics/analyticswidget.php');");


Das hat bei mir Installation (beta2 von der Startseite) auch einwandfrei geklappt. Wie registriert man Templates?

- Was ist, wenn du den Ordner der Trackingcodes wg. zu wenig Rechte nicht anlegen kannst? Man kann in den Dateien jeden beliebigen Code speichern => Kommst du aufs Dashboard, wenn dein Widget aktiv ist, hast du Vollzugriff auf die Datenbank und die Dateien.


Darauf hat mich Juku schon angesprochen. Ist aber obsolet (erkläre ich weiter unten).

- Gibst du die Trackingcodes eigentlich abhängig vom Ordner aus? Sprich ich mache in einen Unterordner einen neuen Code dazu, wird der dann auch nur im Unterordner angezeigt? Andernfalls würde ich einen normalen Seitentyp dem Widget vorziehen.


Nein, die Ordnerabhängigkeit wird beim Plugin nicht berücksichtigt. (Wird geändert -> Erklärung erfolgt weiter unten)
Nur kurz zum Seitentyp? Ein Seitentyp, ermöglicht für meine Verständnis eine spezielle Seite. Z.B. mache ich ein Seitentyp "suche" für ein "Suchplugin" und kann dort in der Editorklasse das Suchformular und die Ausgabe entwickeln. Aber der "Trackingcode" sollte ja, wenn möglich auf jeder Seite sein und nicht nur auf einer - sonst ist er ziemlich unsinnig. Oder verstehe ich das Konzept des Seitentyps falsch?

Ich würde dir raten hier die Sachen in die Datenbank zu schreiben.

Wird umgesetzt! Versprochen!

Da das (glaube ich) das erste Plugin ist, was ich von dir checke, wollte ich nochmal sagen, dass das Feedback nicht böse gemeint ist. Es soll einfach nur dafür sorgen, dass die Qualität unserer Plugins einigermaßen stimmt und so bekommst du nebenbei noch ein paar Tipps an die Hand, wie du auch den Code für deine privaten Projekte optimieren kannst ;-)


Das ist beinahe richtig, es ist mein erstes Plugin das ich veröffentliche. Allerdings habe ich für CL schon vorher andere Plugins geschrieben. Allerdings ziemlich simpel und sehr projektbezogen, dass eine Veröffentlichung einfach wenig Sinn machte.

Keine Angst, ich bin kritikfähig ^^

Zu meinen Vorstellungen einer Version 2.0 dieses Plugins:

Es wird kein Widget mehr sein! Sondern über die Settings laufen. Grundsätzlich ist die "Value" Spalte (Varchar255) zu "klein" um komplette Trackingcodes abzuspeichern. Deswegen wird das Plugin spezifischer.

Man wird in den Einstellungen auswählen können (vorerst) zwischen Piwik (weil ich das nutze) und Google Analytics (weil der Rest der Welt das benutzt). Danach werden nur noch kleine Informationen in den Settings benötigt:

Also konkret:
In den Plugin Settings wählt man z.B. Piwik: Danach braucht man URL der Piwik Installation und den Authtoken. Diese zwei Daten werden gespeichert und danach der komplette Trackingcode (content_bottom) über den EventManager() eingefügt.

Bei Google Analytics müsste der AuthCode (bzw UserID, oder wie das dort immer heisst) reichen.

Genau so macht es übrigens auch mein Wordpress Plugin.

SVN hat noch kein Update - ich melde mich wieder hier, wenn die Files ein Update bekommen haben.

kim88
 iPhone 5 16GB black  iPad Mini 16GB WiFi + Cellular black  Apple TV 2
 MacBook Pro Retina 15" Mid 2012 8GB RAM  27" Thunderbolt Display

Klingt doch gut! :)
@Letztes Abschnitt: Sowas müsste ich auch mal machen.^^

@Code:
Du kannst doch auch den Code m.H. des PluginData-Plugins speichern!
Dafür ist dieses ja da. ^^
Dann kann dir dieses VARCHAR(255) aus den Settings nämlich auch egal sein! :D

SVN Update ^^ alles ist besser und überhaupt ;)
 iPhone 5 16GB black  iPad Mini 16GB WiFi + Cellular black  Apple TV 2
 MacBook Pro Retina 15" Mid 2012 8GB RAM  27" Thunderbolt Display

Ahja, bevor man das Teil einfach "drüberinstalliert" sollte man das Plugin erst deaktivieren.
 iPhone 5 16GB black  iPad Mini 16GB WiFi + Cellular black  Apple TV 2
 MacBook Pro Retina 15" Mid 2012 8GB RAM  27" Thunderbolt Display

Gefällt mir jetzt richtig gut! Ist eines der besten Plugins die hier eingereicht wurden.

Nur noch zwei Kleinigkeiten:
- Wenn ich die Einstellungen speichere, wird erstmal die alte wieder angezeigt. Könnte evtl. auch mit nem Bug in den Settings zusammenhängen, kannst ja nochmal checken und evtl. nen Workaround einbauen
- Check mal das Encoding deiner info.php. Dein Nachname wird bei mir etwas kaputt angezeigt.

Danke für das Lob:

Beide Probleme sind behoben:

Das Problem mit meinem Namen durch ein utf8_decode()

Edit: Aber eigentlich ist das ein Problem vom Core. Rein technisch gesehen sollte das nicht passieren - würde ich mal auf deine Bug Liste setzen ;)

Bei den Settings, hab ich etwas umgestellt. Der Teil zum speichern ist jetzt weiter oben, ich musste eine Variabel unsetten und habe herausgefunden, das man Daten aus der settings Table herauslesen kann ohne das der Cache berücksichtigt wird.

^^

Viel Spass beim anschauen ;)
 iPhone 5 16GB black  iPad Mini 16GB WiFi + Cellular black  Apple TV 2
 MacBook Pro Retina 15" Mid 2012 8GB RAM  27" Thunderbolt Display

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »kim88« (16. Juni 2013, 20:13)


Bist du sicher, dass der Tracking-Code für Google passt? Hast ja als Url doubleclick angegeben, bei mir sieht der (direkt von Google) aber so aus:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript">

  var _gaq _gaq || [];
  _gaq.push(['_setAccount''UA-30516421-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga document.createElement('script'); ga.type 'text/javascript'ga.async true;
    ga.src = ('https:' == document.location.protocol 'https://ssl' 'http://www') + '.[b]google-analytics.com/ga.js[/b]';
    var document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gas);
  })();

</script>
Ist halt ne andere Domain drin. Ansonsten passts jetzt.

Der Trackingcode funktioniert dennoch. Dieser hier hat den Vorteil das er auch funktioniert bei gewissen Display Werbungen: Mehr dazu hier:

https://support.google.com/analytics/ans…hl=de&utm_id=ad
 iPhone 5 16GB black  iPad Mini 16GB WiFi + Cellular black  Apple TV 2
 MacBook Pro Retina 15" Mid 2012 8GB RAM  27" Thunderbolt Display

Ahh ok, sonst sahs ok aus, dann werd ichs glaub ich morgen mal veröffentlichen.

Ähnliche Themen