Hallo!
Ich habe mir selbst ein doch recht einfaches CMS selbst programmiert und nun nach einer Möglichkeit gesucht den Verzeichnisbaum, der als Menüführung im CMS genutzt wird, für eine automatische Sitemap zu entwerfen. Folgender Quellcode entstellt nun eine Sitemap. Die erste Funktion (make_tree) ist von Felix Riesterer, die Auswertung (umwandeln) ist von mir. Leider ist mir eine Explorer Gliederung nicht ganz geglückt, aber so siehts auch ganz passabel aus.
Viel Spaß mit dem Quellcode
Thorsten Beuth
<!--- Quellcode -->
<a href="?inc=./content/index.php">Startseite</a><br />
<?php
function make_tree($path, $mode) // $mode steuert, ob nur Verzeichnisse,
{ // Dateien oder beides ausgelesen werden
$list = array(); // soll. Werte: "dir", "file", "all"
$handle=opendir($path); while($a=readdir($handle))
{
if(!preg_match('/^./',$a))
{
$full_path="$path/$a";
switch($mode)
{
case "all": $list[]=$full_path; break;
case "dir": if(is_dir($full_path)) $list[]=$full_path; break;
case "file": if(is_file($full_path)) $list[]=$full_path; break;
}
if(is_dir($full_path))
{
$recursive=make_tree($full_path, $mode, $i_tree);
for($n=0; $n<count($recursive); $n++)
{
$list[]=$recursive[$n];
}
}
}
}
closedir($handle);
return $list;
}
function umwandeln ($list) {
foreach ($list as $value) {
$splitted = split ('/', $value);
$count_split = count($splitted);
$padding_left = 40*($count_split-1);
$link[] = "<font style="padding-left:$padding_left">└ <a href="?inc=./$value/index.php">".ucfirst($splitted[$count_split-1])."</a></font><br />\n";
}
return $link;
}
$baumliste = umwandeln (make_tree("content","dir"));
foreach ($baumliste as $value) {
echo $value;
}
?>