Piwik Tag Cloud Liste per API in PHP Webseite einbinden


(McHunter) #1

Hallo Piwiker,

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?

Danke und Grüße aus Hamburg


(Christian Schneider) #2

Hallo

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.

Grüße von Rhein und Mosel an die Elbe,
Christian.


(McHunter) #3

[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.

  1. 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.

  1. 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.

  2. 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!?

Danke und Gruß aus Hamburg


(Thomas Seifert) #4

Einfach aus den Daten die Tag-Cloud selbst erzeugen?
Gibt doch so einige Skripte oder Flash-Files dafür im Netz.


(McHunter) #5

[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.


(Thomas Seifert) #6

Ähm, warum wären bei Piwik Updates da Änderungen notwendig? Meine Skripte laufen seit 0.5 bis heute 0.8 ohne Probleme weiter … .


(McHunter) #7

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.


(Fabian Becker) #8

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.


(McHunter) #9

Moin Fabian Becker,

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.


(bwurm) #10

Hi,

den gleichen Wunsch habe ich auch: Darstellung als Cloud. Hat jmd mittlerweile eine Lösung?

Danke
Bernd


(bwurm) #11

… 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>  ";

}

Grüße Bernd