MODx Snippets zum Auswerten von Piwik
von Thomas Jakobi am Mittwoch, 28. Juli 2010 um 23:56 Uhr.
Zum Auswerten von Piwik Ergebnissen habe ich ein paar kleine Snippets für MODx Evolution (1.x) zusammengeschrieben. Vielleicht können auch andere diese Snippets gebrauchen. Der Zugriff per Web-API auf Piwik ist leider etwas langsam. Je nach Hosting der MODx und Piwik-Installation sollte das Ergebnis gecacht und per Cronjob tageweise aktualisiert werden.
Das erste Snippet gibt eine Liste der meistgeklickten Dokumente aus. Der Template-Chunk zur Ausgabe lässt sich einfach anpassen.
PiwikBest.php
<?php global $modx; $limit = isset($limit) ? $limit : '5'; $tpl = isset($tpl) ? $modx->getChunk($tpl) : ''; $tpl = ($tpl != '') ? $tpl : '<b>[+keyword+]</b> ([+hits+] hits)<br>'; // Get the token on the API page inside your Piwik interface $token_auth = '12345678991234567890123456789012'; $url = 'http://url.der.piwik.installation/'; $url .= '?module=API&method=Actions.getPageTitles'; $url .= '&idSite=1&period=month&date=yesterday'; $url .= '&format=PHP'; $url .= '&token_auth=' . $token_auth; $fetched = file_get_contents($url); $content = unserialize($fetched); // case error if (!$content) { return 'Error, content fetched = ' . $fetched; } $seiten = $modx->runSnippet('Ditto', array('tpl' => '@CODE:[+pagetitle+]|[+id+],', 'tplLast' => '@CODE:[+pagetitle+]|[+id+]', 'sortBy' => 'menuindex ASC', 'level' => '10')); $seiten = explode(',', $seiten); $check = array(); foreach ($seiten as $seite) { $seite = explode('|', $seite); $check[$seite[0]] = $seite[1]; } $output = ''; $i = 1; foreach ($content as $row) { $keyword = trim(urldecode($row['label'])); $hits = $row['nb_visits']; if (array_key_exists($keyword, $check)) { $chunk = str_replace('[+keyword+]', $keyword, $tpl); $chunk = str_replace('[+id+]', $check[$keyword], $chunk); $output .= str_replace('[+hits+]', $hits, $chunk); if ($i++ == $limit) { return $output; } } } return $output;
Ein weiteres Snippet gibt die Hits zu einem per Parameter übergebenen Pagetitle aus.
PiwikHits.php
<?php global $modx; $pagetitle = isset($pagetitle) ? $pagetitle : ''; // Get the token on the API page inside your Piwik interface $token_auth = '12345678991234567890123456789012'; $url = 'http://url.der.piwik.installation/'; $url .= '?module=API&method=Actions.getPageTitles'; $url .= '&idSite=1&period=year&date=yesterday'; $url .= '&filter_column=label&filter_pattern=' . urlencode($pagetitle); $url .= '&format=PHP'; $url .= '&token_auth=' . $token_auth; $fetched = file_get_contents($url); $content = unserialize($fetched); // case error if (!$content) { return 'Error, content fetched = ' . $fetched; } $output = $content[0]['nb_hits']; return $output;