Skript für Sitemap gesucht.

Ok jetzt wird was ausgegeben. Allerdings stimmen die Links nicht, kannst es ja auf der Seite überprüfen. Die Sortierung ist auch etwas komisch, nach welchem Schema geht den das?
 
Das Schema der Sortierung weiß ich leider nicht.

Aber bei dem Linkproblem, passe mal die Echozeile folgendermaßen an:

PHP:
echo "<li><a href=\"".$file."\">".$file."</a></li>";

Vielleicht klappts dann...

Aber ich glaube, ich werde mich mal heute abend zuhause mal näher damit befassen, und die Funktion vielleicht von Grund auf neuschreiben.
Dann kann man das noch Sortieren und so...

gruß
Lukas
 
Ok dann warte ich einfach auf heute abend :D

Das mit der Sortierung wird so ne Sache. Ich hätte das halt gerne wie auf meiner Seite. Womöglich muß man das dann irgendwie von Hand eintragen, oder man findet ein Kriterium nach dem man sortieren kann.

Kannst du den Links gleich Klassen mitgeben, so das man das mit CSS formatieren kann bzw die Unterpunkte einrücken. Also für die Links im Root ne Klasse und für die Unterpunkte ne andere Klasse.

Praktisch wäre auch wenn man noch Seiten angeben kann, die nicht in der Sitemap auftauchen.

Ich hoffe du hast nichts dagegen, wenn ich das Script wenn es fertig ist als Tutorial im Rapidweaverforum angebe. Ich werde dich natürlich als Verfasser erwähnen.

Vielen Dank
 
Ich denke, das genau kann man heute Abend noch mal klären, oder?
Hab mir gedacht, dass die Endfunktion irgendwie wo aufgerufen wird:
funktion("der_ordner","<a href="_ZIEL_" class="_WASWEISICH_">_DATEINAME_</a>");
Also dass man das, was ausgegeben werden soll mit Platzhaltern mit angibt.

Mal gucken, was am einfachsten ist...

Das mit dem Sortieren wird allerdings ein Problem... weil, wenn man die Reihenfolge nicht alphabethisch haben will, sondern nach einem manuellem Schema, ist es sinnvoller, die Dateien einfach per Hand zu verlinken.
Alphabetisch (bzw. umgekehrt) ist aber kein Problem. Ein paar andere Möglichkeiten sollte es auch geben. (Dateiendung, nter Buchstabe, Dateigröße, Ordner und sowas).

Und veröffentlichen, klar, warum nicht. Vielleicht werde ich ja auf diesem Wege berühmt :D

gruß
Lukas
 
Pardon, hab das gestern nicht mehr hinbekommen. So ein komischer Mensch, der sich "Meine Freundin" nannte, meinte plötzlich meine Zeit in Anspruch zu nehmen. ^^
Ich guck, das ich das heute mache, die Grundstruktur hab ich bereits.

gruß
Lukas
 
Ei das Scirpt ist ja etwas länger als das erste ;)

Ja mit sowas rechnet man echt nciht.

Find ich auf jeden Fall super, das du das Script schreibst.
 
Danke.
Muss das teil jetzt nur noch dazu bringen, dass es auch was ausgibt ^^
Wenn mir nichts daziwschen kommt, werde ich wohlmöglich heute fertig. Ist aber nicht versprochen, da es, wie man sieht, "schlimmer ist als gedacht".

naja, ich meld mich heute noch einmal.

gruß
Lukas
 
So, fertig.

PHP:
<?php
function schreibeordner($ordner,$html = "\n",$sortart = 0,$sortflg = 0)
{
/* schreibeordner() => Gibt Ordnerinhalt mit formatierung und sortierung zurueck
*   Laeuft NICHT Rekursiv (gibt immer nur einen Ordner aus)
* Argumente:
*   $ordner => Ordner, der durchsucht werden soll
*   $html => Formatierung der Ausgabe. Folgende Platzhalter sind erlaubt:
*     _DATEI_ => Die Datei, die angezeigt wird.
*     _URL_ => Gibt URL zur Datei aus (für Links)
*     _ENDUNG_ => Gibt die Dateiendung aus
*     _GROS_ => Gibt die Groesse der Datei aus
*     _ZEIT_ => Gibt die Zeit aus, zu der die Datei zuletzt editiert worden ist
*     __ =>
*   $sortart => Gibt an, wonach Sortiert werden soll
*     0 => Keine Sortierreihenfolge
*     1 => Alphabetisch nach Dateinamen
*     2 => Aphabetisch nach Dateiendungen
*     3 => Dateigroesse
*     4 => Letzte Bearbeitungszeit
*     5 => Ordner oder Datei Alphabetisch nach $nameordner und $namedatei
*     6 => URL (da aber nur ein Ordner angegeben werden kann, identisch mit auswahl 0
*   
*   $sortflg => Sortierreihenfolge
*     0 => Aufsteigend
*     1 => Absteigend
*/
//Einstellungen:
$datumsformat = "d.m.y H:i";    // Naehere Erlaeuterung siehe: http://de3.php.net/manual/de/function.date.php
$nameordner = "Ordner";            // Die Bezeichnung für Ordner, die mit _TYP_ ausgegeben wird.
$namedatei = "Datei";            // Die Bezeichnung für Dateien, die mit _TYP_ ausgegeben wird.

//Funktion, aber hier nichts mehr ändern.
if($verz = opendir($ordner))
{
    $x = 0;
    $file = array();
    while($temp = readdir($verz))
    {  //#3
        if($temp != '.' AND $temp != '..')
        {  //#4
            $file[$x]['1'] = $temp;                        // Nach Dateiname
            if(!$temp2 = strrchr($temp,".")){
                $temp2 = " ".$ordner;
            }

            $file[$x]['2'] = substr($temp2,1);
            $file[$x]['4'] = filemtime($ordner."/".$temp);            // Nach letzter Bearbeitungszeit
            $file[$x]['3'] = filesize($ordner."/".$temp);            // Dateigroesse
            $file[$x]['5'] = is_dir($ordner."/".$temp) ? $nameordner : $namedatei;    // Ordner oder Datei
            $file[$x]['6'] = $ordner."/".$temp;
            clearstatcache();
          
            $x++;
        }  //+4
    }  //+3
    closedir($verz);

    // Sortieren:
    if($sortart > 0 AND $sortart <= 5)
    {
        for($y=0;$y<$x;$y++)
        {
            for($z=$y;$z<$x;$z++)
            {
                $chk = strnatcmp($file[$y][$sortart], $file[$z][$sortart]);
                if($chk > 0)
                {
                    $t = $file[$y];
                    $file[$y] = $file[$z];
                    $file[$z] = $t;              
                }
            }
        }
    }
    //Umdrehen
    if($sortflg != 0)
    {
        $file = array_reverse($file);
    }
  
    // Vorbereiten zur Ausgabe:
    $return = array();
    foreach($file as $var){
        $t = $html;
        $ar = array('_DATEI_' => $var[1],
                    '_ENDUNG_' => $var[2],
                    '_GROS_' => $var[3],
                    '_ZEIT_' => date($datumsformat,$var[4]),
                    '_TYP_' => $var[5],
                    '_URL_' => $var[6],
        );
        $return[] = strtr($t, $ar);
    }
    $t = implode("",$return);
    return $t;

// Das hier kommt nur, wenn es den Angegebenen Ordner nicht gibt
}
else
{
    return "Keinen Ordner mit diesem Namen gefunden";
}
} //Funktionsende, ab hier kann wieder verändert werden, was will.

echo schreibeordner("maukisordner","<a href=\"_URL_\">_DATEI_</a> - _TYP_ (Groesse:_GROS_ Byte, Zuletzt bearbeitet: _ZEIT_)<br>",5,0);
?>

Habs noch mal als Zip-Datei angehangen, dann brauchst Du es nicht markieren (ich persönlich mag sowas nämlich nicht).

Ganz unten ist das, was für Dich zählt, das, was hinter dem "echo" steht.
Dort kannst Du deinen Ordner bei "maukisordner" einsetzen, den Link und die anderen Sachen bearbeiten, sowie Das Sorierkriterium und die Sortierfolge angeben. Was man genau angeben kann, steht innerhalb der Funktion, ganz am Anfang.

Zusätzlich hab ich noch drei Variablen gesetzt, welche das Datums und Zeitformat angeben, sowie den ordner und Dateien auch diesen Namen geben (kann ja sein, dass du stattdessen lieber file und path da stehen haben willst)

es wird mit sicherheit bessere Methoden geben, und welche mit wesentlich mehr möglichkeiten, aber ich habe mich einmal auf diese simplen Sachen beschränkt, sonst wäre ich mit meiner beschränkten Zeit ja nie fertig geworden.

Ich hoffe, das war jetzt das, was du wolltest.
Falls noch fragen auftauchen, einfach stellen.

gruß
Lukas
 
Irgendwie ist es noch zu früh am morgen für mich. Wie muß man den alles hinter Echo angeben?

Ausgelesen werden soll das Verzeichnis und gespeichert werden soll alles in /vcp/sitemap.php. Muß das eigentlich ne extra Datei sein, weil das Script liegt bei mir unter /vcp/sitemap.php?
 
Du kannst das Script (bzw. die Funktion), auf jeder Seite benutzen.
Wichtig ist, dass die Dateieindung .php ist, damit der Server erkennt, dass er sie umwandeln soll.
Füge einfach alles zwischen "<?php" und "?>" am Anfang der Datei ein, bis auf die Zeile mit dem Echo.

Dort, wo die Sitemap erscheinen soll, schreibst Du noch einmal ein "<?php" und "?> und dazwischen kommt dann die Echo-Zeile hin.

Das ganze funktioniert, technisch gesehen folgendermaßen:
Am Anfang wird eine Funktion erstellt, mit namen "schreibeordner". Innerhalb der Funktion werden die Parameter verarbeitet, aber ausgeben tut die Funktion selbst nichts. Sie gibt nur Werte zurück.

das "echo" ist es letzendendes, was die Ausgabe in HTML macht. Dazu braucht es aber ein Parameter, in diesem Fall den Rückgabewert von "schreibeordner".

Die Parameter von "schreibefunktion" setzen sich wie folgt zusammen:
Das erste Parameter ist der Ordnername, ohne abschließenden Schrägstrich. ansonsten wird die genauso gemacht, wie bei dem "alten" Script. Wichtig sind hier die Gänsefüße
Das zweite Parameter, getrennt durch ein Komma, und ebenfalls in Gänsefüßen, bestimmt, wie das ganze formatiert werden soll, also, wie in deinem Beispiel die Links aussehen sollen.
Wichtig ist es hier, dass alle Gänsefüße (bis auf die, die den Parameter einschließen, die hier auftauchen einen \ bekommen (Auf dem ibook mit Großschreib + Alt + 7, aber ich denke, das weißt du :)).
Mit den Platzhaltern, die innerhalb der Funktion erläutert sind, werden die Dateieigenschaften eingefügt. Da, wo also später z.B. der Dateiname stehen soll, kommt ein _DATEI_ hin. Man muss nicht alle Platzhalter benutzen, die möglich sind, man kann auch gar keine benutzen (was aber keinen Sinn hätte ;))
Das Dritte Parameter gibt das Sortierkriterium an. Hier kommt die entsprechende Zahl hin, wie in der Funktion erläutert. Ohne Gänsefüße, nur durch ein Komma von dem zweiten Parameter getrennt. Gibt man nichts (oder null) an, wird das so ausgegeben, wie es im Verzeichniss steht.
Das Dritte Parameter dreht, wenn ein anderes Wert als Null angegeben wird, die Sortierreihenfolge um. auch dieses Parameter muss man nicht angeben. wenn dies, (oder null) der Fall ist, passiert mit der Sortierreihenfolge nichts.


In deinem Fall tippe ich mal af folgendes:

PHP:
echo schreibefunktion(".","<a href\"_URL_\" class=\"sitemaplink\">_DATEI_</a><br>",1);

Das müsste, wenn ich mich nicht irre, Das Verzeichniss ausgeben, in dem das Script liegt (Das Script erscheint dadurch auch in der Liste, könnte da zur Not noch was einbauen, was das verhindert. wird dadurch aber nicht einfacher..).

Der Test bei mir hat funktioniert, könnte allerdings sein, dass es bei dir wieder Probleme mit den Pfadangaben gibt...

Ich hoffe, ich hab deine Frage richtig verstanden, und ausreichend beantwortet. Falls nicht, ich denke, ich werde heute den ganzen Tag im Internet sein, ICQ Nummer steht im Profil, falls es schnell gehen muss.

Gruß
Lukas
 
Mmh, ich habe jetzt folgendes angegeben, da hagelt es aber Fehlermeldungen?

PHP:
echo schreibefunktion(".","<a href\"www.markus-burkhardt.de/vcp_\" class=\"sitemaplink\">_DATEI_</a><br>",1);
 
Was für Fehlermeldungen?
Und mal ganz blöd gefragt: Den "großen" Teil mit der eigentlichen Funktion, der befindet sich auch (und über dem echo) in der Datei?

gruß
Lukas
 
Ja ich hab den ganze Code in meine Seite eingefügt.
Fehler
 
1.) Bergib mir. Ich habe in meinem letzen Beispiel statt "schreibeordner" "schreibefunktion" geschrieben. Ersteres ist natürlich richtig (falls du den namen der Funktion nicht geändert hast, wovon ich ausgehe)

2.) Kannst Du mir die Komplette Datei angeben? Oder zumindest den Part um Zeile 109?

Ich denke, das wird nur ein kleiner Fehler sein.

gruß
Lukas
 
Hab dir mal meinen Code angehängt. Die Korrektur ist schon drin.
 
Sehr merkwürdig...
Bei mir klappt das Script auch nicht.
wenn ich aber die echo-zeile in MEIN, hier erstelltes Script kopiere, klappt es einwandfrei.

Hm, probier es doch einmal mit einer anderen Art des hochladens auf den Server. Also Binär und ASCII benutzen, je nachdem, was vorher benutzt worden ist.
Zur Zeit denke ich nämlich, das irgendetwas ein unsichtbares Zeichen da mit reinzaubert, was Probleme macht...
Wenn nicht, hilft es vielleicht den Editor zu wechseln. Taco hatte bei mir ja mal Probleme gemacht.
Was man auch noch machen könnte, währe das Dateiformat, also die Plain-Text, Unicode und UTF8-Geschichte zu ändern. Frag mich jetzt aber nicht nach dem besten, was das angeht, habe ich nicht viel Ahnung, könnte mir nur vorstellen, dass das Probleme machen kann...

Ansonsten bin ich ehrlich überfragt. Tut mir echt Leid. Da müssten dann die absoluten Profis dran.

Sorry, dass das so aufwendig geworden ist, hab selbst nicht damit gerechnet...

viele Grüße, und ich drück Dir (uns, will ja auch, dass das das wird), die Daumen, dass es doch noch hinhaut..

ein Lukas, der gerade verzweifelt...
 
Naja, ich erstelle meine Seite mit Rapidweaver und vielleicht liegt es da dran. Keine Ahnung in welchem Modus er die Seite hochlädt. Ich werde das mal im Rapidweaver Forum posten.
 
Zurück
Oben Unten