ich suche eine Möglichkeit um die Piwik Schlagwortliste (Tag Clouds) per z.B. der API und PHP Export in ein vorhandenes Webseiten PHP Script einzubinden. Also so, dass sich dann auch die Tag Clouds automatisch auf der Webseite aktualisieren.
Ich habe mir die Piwik API Dokumentationen durchgelesen, aber leider nichts Verwertbares dazu gefunden. Hat jemand dazu evtl. ein Workaround bzw. eine Lösung?
Meiner Meinung nach kannst du auch gar keine Tag Cloud über die API oder PHP exportieren, sondern nur die Daten und dir dann die Tag Cloud selbst berechnen.
Was du allerdings tun kannst, ist ein Widget in deine externe Webseite einbinden. Allerdings wird da bestimmt immer die Standardansicht des Widgets ausgeliefert und deine Besucher können frei wählen, welche Ansicht sie haben wollen.
[quote=Christian Schneider @ Aug 2 2010, 04:32 PM]1) Meiner Meinung nach kannst du auch gar keine Tag Cloud über die API oder PHP exportieren, sondern nur die Daten und dir dann die Tag Cloud selbst berechnen.
Was du allerdings tun kannst, ist ein Widget in deine externe Webseite einbinden. Allerdings wird da bestimmt immer die Standardansicht des Widgets ausgeliefert und deine Besucher können frei wählen, welche Ansicht sie haben wollen.[/quote]
Hallo Christian,
vielen Dank für deine Antwort + Vorschlag.
Zu der Ansicht bin ich nach meinen div. Recherchen inzwischen auch gekommen. Ich bekomme zwar mit dem PHP Script von hier: dev.piwik.org/trac/wiki/API/CallingTechniques
die entsprechenden Keywords mit Angabe der Anzahl Hits als Liste auf die Webseite aber leider eben nicht als sog. Tag Clouds.
Und genau das möchte ich nicht machen, zumal das a) nicht in das vorhandene Website Layout paßt und style_emoticons/<#EMO_DIR#>/cool.gif wie du es schon erwähnt hast, dann die Besucher sich dann auch alles andere mit diesem Widget anzeigen und sogar exportieren könnten.
Vielleicht da jemand ja doch noch eine zündende Idee!?
[quote=Thomas Seifert @ Aug 2 2010, 06:22 PM]Einfach aus den Daten die Tag-Cloud selbst erzeugen?
Gibt doch so einige Skripte oder Flash-Files dafür im Netz.[/quote]
Danke für deine Vorschläge.
Ich schaue mich mal dazu um. Allerdings möchte ich ungern noch andere Zusatzscripte dazu benutzen, denn mit künftigen Piwik Updates (die letzten drei kamen in ca. einer Woche) müsste ich dann evtl. permanent Änderungen in den Scripten vornehmen.
Das ist richtig, deswg. schrieb ich ja auch “evtl.”. Da bisher bei den Updates u.a. auch DB Anpassungen von Piwik vorgenommen wurden, würde bei dem Fall von Tabellenpassungen aus denen ein Fremd Tag Cloud Script Daten ausliest dann evtl. Änderungen notwendig werden.
Die Lösung von dir mit einem Fremd Script halte ich pers. somit nicht für sehr optimal. Zumal ich auch noch keins enddeckt habe was dazu gut geeignet ist/wäre.
McHunter: Die Anpassungen an der DB haben nichts mit der API-Schnittstelle zutun. Die API wird immer die gleichen Daten liefern und auch in ihrer Abfrage gleich bleiben.
Das ist nach meinen Erfahrungen/Tests nicht ganz richtig denn die Daten aus der API Schnittstelle liefern bei mir eben nicht “immer die gleichen Daten”.
Das beginnt schon mit der Variable “&format=PHP&filter_limit=20”.
Inzwischen habe ich mir ein Workaround gestrickt, was “einigermaßen” richtig funktioniert, aber leider noch nicht ganz perfekt läuft.
Wenn du also bei deiner Meinung bleibst, dann würde ich mich freuen wenn du dazu dann auch eine Lösung anbieten kannst - Vielen Dank.
… hab ausgehend von der Piwik-1.0 Datenbank selber was geschrieben. Sieht ganz ordentlich aus, wenn man um die Ausgabe einen Container von 200px Breite packt.
anzupassen:
username, passwort, datenbankname
und weiter unten:
MEINESEITE
mysql_connect("localhost", "username", "passwort")
or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("datenbankname");
//--- Bezeichnungen passend zu PIWIK 1.0 ---
$sqlstring="SELECT begriff, COUNT(begriff) AS anzahl
FROM(
SELECT referer_keyword AS begriff,
visit_server_date AS datum
FROM piwik_log_visit
WHERE visit_server_date>='2010-11-28'
AND referer_keyword<>''
)
AS temp
GROUP BY begriff ORDER BY anzahl DESC limit 15
";
$result = mysql_query($sqlstring);
$anzahl_results = mysql_num_rows($result);
//--- häufigstes Vorkommen ermitteln ---
$maxanzahl=0;
$minanzahl=1E9;
for($i=1;$i<=$anzahl_results;$i++){
$row = mysql_fetch_array($result, MYSQL_NUM);
if ($row[1] >$maxanzahl) $maxanzahl=$row[1];
if ($row[1] <$minanzahl) $minanzahl=$row[1];
$cloudtag_begriff[$i]=$row[0];
$cloudtag_anzahl[$i]=$row[1];
//--- lange Texte kürzen ---
if (strlen($cloudtag_begriff[$i]) >= 30) {
$text = substr($cloudtag_begriff[$i], 0, 30);
$pos = strripos($cloudtag_begriff[$i], ' ');
$cloudtag_begriff[$i] = substr($cloudtag_begriff[$i], 0, $pos);
}
}
//--- Ermittlung der Häufigkeitsgrenzen ---
$anzahlstufen=4; // Anzahl der verschiedenen Schriftgrößen
for ($i=1;$i<=$anzahlstufen;$i++){
$stufe[$i] =floor($minanzahl+ ($maxanzahl-$minanzahl)/$anzahlstufen*$i);
}
for($i=1;$i<=$anzahl_results;$i++){
$anzahl= $cloudtag_anzahl[$i];
if ($anzahl==$stufe[4]) $groesse=8;
elseif($anzahl>=$stufe[3]) $groesse=6;
elseif($anzahl>=$stufe[2]) $groesse=5;
else $groesse=4;
//--- weitere, zufällige Stil-Einstellungen ---
//--- Schriftfarbe
$farbe[1]="555";
$farbe[2]="777";
$farbe[3]="999";
$farbe[4]="BBB";
$farbcode=rand(1,4);
//--- Schriftdicke und Neigung ---
$stil[1]="font-weight:normal; font-style:normal;";
$stil[2]="font-weight:bold; font-style:normal;";
$stil[3]="font-weight:bold; font-style:italic;";
$stil[4]="font-weight:normal; font-style:italic;";
$stilcode=rand(1,4);
//--- link-String ---
$googlestring=implode("+",explode(" ",$cloudtag_begriff[$i]))."+site:MEINESEITE.de";
//--- CLOUD-Eintrag ---
echo " <a href=\"http://www.google.de/search?q=".$googlestring."\" style=\"font-size:".($groesse*3)."px;
font-family:Arial, sans-serif; ".$stil[$stilcode]." border:0px solid #ccc;color:#".$farbe[$farbcode]."
\">".$cloudtag_begriff[$i]."</a> ";
}