Page 1 of 1

Word-Cloud Spaß mit dem SEO Log

Posted: Sat 3. Mar 2012, 00:39
by thoblerone
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:

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>
Viel Spaß damit
Thomas