Word-Cloud Spaß mit dem SEO Log
Posted: Sat 3. Mar 2012, 00:39
Hallo zusammen,
ich habe bislang nie so recht etwas mit dem SEO Log Modul anfangen können. Heute habe ich mir damit einen kleinen Spaß erlaubt. Dürfte nix für High-Traffic-Seiten sein, da nicht gerade auf Performance ausgelegt.
Trotzdem kriegt man wenigstens eine schön animierte Tag-Cloud zu sehen. Diese basiert auf dem Google Chart API http://code.google.com/intl/de-DE/apis/ ... harts.html
Einfach einen CP HTML einfügen und Folgendes rein packen:
Viel Spaß damit
Thomas
ich habe bislang nie so recht etwas mit dem SEO Log Modul anfangen können. Heute habe ich mir damit einen kleinen Spaß erlaubt. Dürfte nix für High-Traffic-Seiten sein, da nicht gerade auf Performance ausgelegt.
Trotzdem kriegt man wenigstens eine schön animierte Tag-Cloud zu sehen. Diese basiert auf dem Google Chart API http://code.google.com/intl/de-DE/apis/ ... harts.html
Einfach einen CP HTML einfügen und Folgendes rein packen:
Code: Select all
<div style="clear: both;"></div>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://word-cumulus-goog-vis.googlecode.com/svn/trunk/wordcumulus.js"></script>
<script type="text/javascript" src="http://word-cumulus-goog-vis.googlecode.com/svn/trunk/swfobject.js"></script>
<script type="text/javascript">
google.load("visualization", "1");
// Set callback to run when API is loaded
google.setOnLoadCallback(drawVisualization);
// Called when the Visualization API is loaded.
function drawVisualization() {
// Create and populate a data table.
var data = new google.visualization.DataTable();
data.addColumn('string', 'Tag');
data.addColumn('string', 'URL');
[PHP]
// hole die Liste der Suchabfragen aus dem SEO-Log
$sql = "SELECT count(*) anzahl, query FROM phpwcms_log_seo group by query having count(*)>1 order by 1 desc";
$result = _dbQuery($sql);
// breche jede Abfrage in Worter auf, die gezählt werden
$arrWordCounts = array();
$grenze = 0;
foreach ($result as $data)
{
$arrWords = explode(" ",$data["query"]);
$count = intval($data["anzahl"]);
foreach($arrWords as $word)
{
// Sonder- und Satzzeichen entfernen
$word = preg_replace("/[^a-zA-ZäüöÄÜÖß0-9-]/","",strtolower($word));
if (strlen($word) > 3) // ignoriere die kurzen Wörter
{
if (!isset($arrWordCounts[$word]))
{
$arrWordCounts[$word] = 0;
}
$arrWordCounts[$word] += $count;
}
}
$grenze += 1;
if ($grenze > 50) // nicht zu viele Daten sammeln, sonst gibts gar keine Cloud
break;
}
// bereite Wörterliste für Tag-Cloud auf
echo "// Anzahl Wörter = ".count($arrWordCounts) ."\n";
echo "data.addRows(".count($arrWordCounts ).");\n";
$nWord = 0;
foreach ($arrWordCounts as $word => $count)
{
echo "data.setCell(".$nWord.", 0, '".$word."');\n";
echo "data.setCell(".$nWord.", 1, 'http://www.example.com/suchseitephtml?searchwords=".$word."');\n";
echo "// Word count = ".$count."\n";
$nWord += 1;
}
[/PHP]
// Instantiate our table object.
var vis = new gviz_word_cumulus.WordCumulus(document.getElementById('mydiv'));
// Draw our table with the data we created locally.
vis.draw(data, {text_color: '#0000AA', speed: 50, width:200, height:250});
}
</script>
<div id="mydiv"></div>
Thomas