Skript für Sitemap gesucht.

Mauki

Mauki

Aktives Mitglied
Thread Starter
Dabei seit
24.07.2002
Beiträge
15.499
Reaktionspunkte
189
Ich suche ein einfaches PHP Skript für ne Sitemap. Das sollte einfach alle Seite in einem Verzeichniss auslesen und als Sitemap ausgeben. Natürlich sollte man das auch noch schön mit CSS formatieren können.

Das ganze wäre für Sitemap für Rapidweaver.
 
???
Hab ich jetzt nicht ganz verstanden, was Du meinst, aber vielleicht hilft folgendes:
PHP:
$verz=opendir('.');

while($file = readdir($verz)){
  if($file != '.' && $file != '..')
    echo $file . '<br>';
}

closedir($verz);

Ist PHP, und liest den kompletten Inhalt des Ordner ORDNER aus. den "echo"-Part mann man nach belieben verändern, als Liste ausgeben, mit Links versehen, etc... Und freilich mit CSS ansprechen.

Oder hab ich die Frage nicht ganz verstanden?

gruß
Lukas

PS.: Das Script hab ich von selfphp
 
Das hast du schon richtig Verstanden. Werd mir das mal anschauen.
 
koli.bri schrieb:
PHP:
$verz=opendir('.');

while($file = readdir($verz)){
  if($file != '.' && $file != '..')
    echo $file . '<br>';
}

closedir($verz);


Wie gebe ich den das Verzeichniss an, das ich auslesen will. Kenne mich mit PHP nicht aus. Wenn das noch jemand so bearbeitet das die Sitemap als Liste ausgegeben wird, wäre das nicht schlecht.

Los wo sind die PHP-Coder ;)
 
Öhm, ich würd jetzt sagen, genau wie bei HTML...

Also wenns "irgendein" Verzeichniss ist, was nur über Ecken und kannten einen Bezug zum Script hat würde ich das "hart" angeben also z.B. so:

PHP:
$verz=opendir('http://www.ichhabeinehomepage.de/verzeichnis');

Ansonsten mit relativen Angaben:
PHP:
$verz=opendir('ordner');

Ob da jetzt noch ein "/" am ende kommt musst du Ausprobieren, kann ich jetzt nicht genau sagen.

Auf jeden Fall kommt der Ordner als Argument für die Funktion opendir().

gruß
Lukas

PS.: damit ich es nicht vergesse: Ein Punkt (".")als Ordner heißt, dass der aktuelle Ordner gewählt wird, also der, in dem das Script liegt. Zwei Punkte ("..") heißt, dass man ein Verzeichniss nach oben Springt. Dazu gibt es aber auch noch diesen Link von SelfHTML
 
Ok dann muß ich mir das mal anschauen und ausprobieren. Allerdings ist das ja noch nicht alles. Das ganze sollte dann als Liste ausgegeben werden.
 
Also mit <li>-Tags?

sieht schwerer aus, als es eigentlich ist.
Der "echo"-Befehl gibt das ganze aus. Alles, was keine PHP-Variable ist, sollte in Hockkommas, damit PHP nicht versucht, das zu interpretieren, sondern auch als Text ansieht.

Wenn die einzelnen Punkte als Liste angezeigt werden soll, sieht das dann folgendermaßen aus:
PHP:
PHP-Code:
 $verz=opendir('ordner');

while($file = readdir($verz)){
  if($file != '.' && $file != '..')
    echo '<li>'.$file.'</li>';
}

closedir($verz);

Drauf zu achten ist, dass Text in Hochkommes von dem PHP-Text mit einem punkt (".") verbunden wird, damit PHP weiß, dass das noch alles zusammen gehört.

Ansonsten, schreib einfach mal, wie die fertige Liste in HTML aussehen soll (das Grundschema reicht ja), und dann gucken wir mal, wie das in PHP aussehen kann.

gruß
Lukas
 
Hab ich mir ja fast schon gedacht...
Ich änder das ganze mal ein wenig ab:


PHP:
<html><head><title>Titel</title></head>
<body>
<h1>Überschrift</h1>
<ul>
<?
function schreibeliste($ordner){
  $verz=opendir($ordner);
  while($file = readdir($verz)){
    if($file != '.' && $file != '..')
      echo '<li><a href="'.$ordner.'/'.$file.'">'.$file.'</a></li>';
    }
    closedir($verz);  
}

schreibeliste("meinordner");
?>
</ul>
</body>
</html>

Das müsste das als Liste ausgeben, und die einzellen Listeineinträge als Link machen.

Anmerkung: Ich hab jetzt nicht mehr im Kopf, ob man beim Ordner noch den letzten Schrägstrich mit angeben muss, oder nicht. Falls man das machen sollte, muss man in der echo-Zeile einfach den Scrägstrich weg machen, so dass da steht: [...]$ordner.$file[...]

Habs jett aber aus mangelnder software am Arbeitsplatz nicht getestet.
gruß
Lukas
 
Zuletzt bearbeitet von einem Moderator:
Und noch was: Falls du mehrere Verzeichnisse auslesen willst, und einen Link auf die Datei setzen willst, kannst Du gerne bis heute Abend warten, ich hab letztens noch so ein Script geschrieben (müsste da nur noch rausnehmen, dass die Ordner, die durchsucht werden dürfen in einer Datebank stehen).

Aber wie gesagt, erst heute Abend (und wenn ich dran denke, räume zuhause noch um, da kann ich schonmal das ein oder andere vergessen^^)

gruß
Lukas
 
Naja das ganze sollte schon mit Links sein, ansonsten mancht ja ne Sitemap nicht viel sind. Am besten wäre es wenn die Links als Liste ausgegeben werden.
 
Habe aus versehen meinen Beitra nicht zietiert, sondern geändert.

Es ist Beitrag 10, der hier stehen sollte...

gruß
Lukas
 
Dat wird ja immer besser. Ich werde das heute abend mal ausprobieren.
 
Ach, und man kann das ganze jett ganz einfach mehrfach aufrufen, indem man die Funktion schreibeliste() mit dem Ordnernamen als Parameter aufruft.
Will man die beispielssweise an zwei komplett verschiedenen stellen aufrufen, müsste man folgendes schreiben:

PHP:
<?
screibeliste("ordnereins");
?>

Dann ganz viel Inhalt in HTML wie <b>fetter Text</b> zum Beispiel, der, wegen seines Gewichtes ein wenig länger braucht, bis er <i>ganz wo anders</i> ist...<br><br>

aber immerhin sind alle da, wo sie sein sollen.

<?
schreibeliste("ordnerzwei");
?>

Noch mehr ganz viel Inhalt, der abolut keinen Sinn macht 
<img src="bild_was_keinen_sinn_macht.png">


gruß
Lukas

PS.: Freillich die Gänsefüße nicht vergessen, und das ";"
 
Also einmal reicht mir. Wir werden denn in deinem Script Unterseiten ausgegeben. Kannst du denen gleich ne entsprechende CSS-Klasse zuweisen, ebenfalls wie den Seiten im Root.

Dann müsste sich das Skript nicht um die Ausgabe kümmern, das könnte man bequem mit CSS machen.
 
So hab das mal ausprobiert. Mir scheint aber das ich einiges nicht korrekt angegeben habe, da ich einen Fehler bekomme.

Mein Code

PHP:
<?PHP
function schreibeliste('http://www.markus-burkhardt.de/dummy/'){
  $verz=opendir(http://www.markus-burkhardt.de/dummy/);
  while($file = readdir($verz)){
	if($file != '.' && $file != '..')
	  echo '<li><a href="'.$ordner.$file.'">'.$file.'</a></li>';
	}
	closedir($verz);  
}

schreibeliste("meinordner");
?>

Ausgabe

Code:
'; } closedir($verz); } schreibeliste("meinordner"); ?>
 
Versuchs mal so:

PHP:
<?PHP
function schreibeliste($ordner){
  $verz=opendir($ordner);
  while($file = readdir($verz)){
	if($file != '.' && $file != '..')
	  echo "<li><a href=\"".$ordner.$file."\">".$file."</a></li>";
	}
	closedir($verz);  
}

schreibeliste("http://www.markus-burkhardt.de/dummy/");
?>


Ich hab jetzt die einfachen Hochkommas gegen Gänsefüße ersetzt.
Und noch was, was ich wohl vergessen hatte zu sagen:
Nicht bei der eigentlichen Funktion kommt der Ordner hin, sondern der wird erst angegeben, wenn man die Funktion aufruft (hab das mal geändert). ;)

jetzt sollte es klappen.
(Man möge mir verzeihen, dass ich noch nichts testen kann, es dauert noch ein wenig, bis meine Homepage vorzeigbar ist, aber dort habe ich dann auf jeden Fall ein kleines Tool, om sowas mal eben zu testen)

Gruß
Lukas
 
Hab dein Script jetzt 1 zu 1 übernommen, bekomme aber Fehlermeldungen
 
ersetze mal die Pfadangabe vom Webserver durch den genauen Pfad: /home/web31/mauk06/ftproot/www.markus-burkhardt.de/dummy

vielleicht gehts dann...
 
Zurück
Oben Unten