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