Avatar billede tbpoulsen Nybegynder
01. februar 2001 - 11:00 Der er 22 kommentarer og
1 løsning

\"du er her\" script søges

jeg søger et script der kan lave en \"her er du\" kategorisering af et website i stil med: url> underpunkt1> underpunkt2> underpunkt3> osv.

da sitet ligger i en undermappe vil det være fedt hvis scriptet ikke peger helt tilbage til domænenavnet men starter i den undermappe hvor sitet ligger - altså noget med at adressen http://mitsite.dk/mappe/biler/honda/previa.html bliver omsat til:
biler> honda> previa.html

på forhånd tak
torsten
Avatar billede logout Nybegynder
01. februar 2001 - 11:31 #1
Jeg kender ikke til den \'rigtige\' løsning, men jeg har selv implementeret en lynhurtig een, der bare skriver document title ud ... så skal din sides title bare passe til indholdet ...

Kan ses på www.greyscale.dk
Avatar billede tbpoulsen Nybegynder
01. februar 2001 - 11:41 #2
det var ikke lige det jeg leder efter... meningen er at brugeren skal kunne se hvor han er i hierakiet og bruge kategoriseringen som navigation - f.eks hvis man har forvildet sig ind under honda/previa.html og vil tilbage til /biler/ klikker man på biler>
Avatar billede logout Nybegynder
01. februar 2001 - 11:46 #3
Avatar billede Thomas Nybegynder
01. februar 2001 - 12:41 #4
Jeg har lavet en som jeg brugte på et tidspunkt. (jeg er på arbejde nu, så hvis du er interesseret kan jeg poste den senere).
Den gør det, at den også kan vise hvilken side du er på lige NU, bare på den måde at du kan selv bestemme beskrivelsen af siden inde i html\'en... så fx. kommer stien til at se sådan ud: Forside > biler > Honda > Previa eksempelvis (og naturligvis med links...)
Du kunne så fx. også i html\'en skrive \"Detaljer om Previa\" i stedet for bare som ovenfor hvor der står Previa.. synes selv det var smart da jeg lavede det (o:

//Thomas
Avatar billede tbpoulsen Nybegynder
01. februar 2001 - 12:57 #5
logout - det ser fint ud men det er jo asp - hvilket jeg ikke har lyst til at kaste mig over for nuværende, men tak for inspirationen
Avatar billede tbpoulsen Nybegynder
01. februar 2001 - 12:58 #6
raivo - prøv at poste den senere - det lyder ok
Avatar billede Thomas Nybegynder
01. februar 2001 - 13:38 #7
Jeg poster den ligeså snart jeg kommer hjem. Du skal dog være opmærksom på at den smarteste måde at kalde den på er ved at bruge SSI!

//Thomas
Avatar billede Thomas Nybegynder
01. februar 2001 - 16:34 #8
Her er så scriptet... (jeg er ked af de manglende kommentarer, men faktisk skulle det være ret let læseligt hvis man er lidt inde i perl).

Jeg har kaldt scriptet for URL.CGI (men det er egentligt underordnet):
[quote]

#!/usr/bin/perl
########################################################
##### Script lavet af Thomas Palm
##### Dette script laver links til stien som man har
##### været igennem.
########################################################
print \"Content-type:text/html\\n\\n\";

@niveauer = split(/\\//,$ENV{\'REQUEST_URI\'});
$antal = $#niveauer;
$font = \"<font color=#6666aa>\";
$sti = \"/www/x-p.dk/web\";

print \"<a href=\\\"/\\\">$font forside</a>\";

for $tael (1..$antal) {
    $mitlink = \'/\';
    for $link (1..$tael) {
        $mitlink=$mitlink.$niveauer[$link].\"/\";
    }


    $thispagelink = \"denne side\";
    $stif = \"$sti$mitlink\";
    chop($stif);
    if (-f $stif) {
        open (side, \"<\" . $stif);
        @htmlside = (<side>);
        $htmllinier = $#htmlside;
        close (side);
        for $temp (0..$htmllinier) {
            $_ = $htmlside[$temp];
            if (/!DESC/) {
                $thispagelink = $_;
                $thispagelink =~ s/<!-- //g;
                $thispagelink =~ s/ -->//g;
                $thispagelink =~ s/!DESC //g;
            }
        }
    }

    $niveauer[$tael] =~ s/[a-z]+.shtml/$thispagelink/g;
    chop($mitlink); # fjern / tilsidst
    print \"&nbsp;/&nbsp;<a href=\\\"$mitlink\\\">$font\".$niveauer[$tael].\"</a>\";
}

[/quote]
Avatar billede Thomas Nybegynder
01. februar 2001 - 16:39 #9
Du kan så kalde det på din side via SSI. Jeg gjorde det på denne måde:

<!--#exec cgi=\"/cgi-bin/url.cgi\"-->

I starten af din side kan du fx. gøre således:

<!-- !DESC Beskrivelse af side -->
(hvor !DESC er det keyword der aktiverer læsningen af beskrivelsen)

Det gør at hvis du har en side der hedder MINSIDE.SHTML med
<!-- !DESC Min side -->
Så vil det blive vist som fx. FORSIDE / Min side
Håber det er forklaring nok!
Avatar billede tbpoulsen Nybegynder
05. februar 2001 - 14:41 #10
jeg har prøvet scriptet og det virker ikke helt super.... resultatet kan du se her http://www.sr.au.dk/sr/shb01/urltest.shtml
hos mig kommer der kun \"forside\" og link til roden og da jeg er novice mht perl kan jeg ikke greje hvorfor scriptet ikke udskriver hele stien... måske er det noget med [kode] @niveauer = split(/\\//,$ENV{\'REQUEST_URI\'}); [/kode] hvor REQUEST_URI ikke virker efter hensigten - hvordan kan jeg tjekke om det gør det?

torsten
Avatar billede Thomas Nybegynder
05. februar 2001 - 15:31 #11
Humn! Prøv at ændre request_uri til script_url (det skulle forhåbentligt give det ønskede resultat). Ellers må jeg lige give et kort eksempel på hvordan du får vist alle din environment variabler så du ved hvad du skal kigge efter (o:

//Thomas
Avatar billede Thomas Nybegynder
05. februar 2001 - 15:43 #12
Brug følgende stykke cgi til at se dit environment med:

[quote]

#!/usr/bin/perl
print \"Content-type:text/html\\n\\n\";
foreach $element (keys %ENV) {
print \"$element = $ENV{$element}<br>\";
}

[/quote]

Du skal så finde et eller andet sted på listen hvor der står noget i retning af /cgi-bin/env.cgi (altså hvor /cgi-bin er det første directory fra roden og /env.cgi er selve filen). Hvis der står noget i retning af dette et sted, så brug dette som udgangspunkt til @niveauer = split....

//Thomas
Avatar billede tbpoulsen Nybegynder
05. februar 2001 - 18:35 #13
tak for de hurtige svar... nu virker det næsten...  http://www.sr.au.dk/sr/shb01/urltest.shtml viser stien MEN...
1) stien er underlined hele vejen og jeg lurer på om det kan lade sig gøre at opdele den eller om den eneste måde at fjerne den på er at lave en def. i css at links ikke skal være underlined?
2) den oprindelige plan var at det ikke var HELE stien men kun fra f.eks \"shb01\" og frem der skulle vises - kan det lade sig gøre?
3) ideen med <!--DESC... lyder super men jeg fattede ikke helt hvordan - udover at indsætte <!--DESC urltest --> skal jeg vel også ændre noget i scriptet eller hür?
4) kan man fjerne det sidste link i stien så der godtnok står hvor du er (\"denne side\") men ikke linkes til siden?

pyha... mange spørgsmål.....

torsten
Avatar billede Thomas Nybegynder
05. februar 2001 - 18:42 #14
1) Understregningen fjerner du bare med CSS (style sheets). Skulle ikke være noget problem!!

2) Det kan det sikkert godt, men jeg kan ikke helt se ideen med det..!??! Umiddelbart har jeg ikke tid til at ændre det.

3) Nej, der skal ikke ændres i scriptet. I samme fil som du kalder url.cgi med, skal du blot tilføje <!-- DESC sidebeskrivelse --> (præcis som det står med mellemrum før og efter DESC). Der kommer ikke til at stå \"denne side\" hvis du bruger denne fremgangsmåde.

4) Det gør vel ikke noget??? Men det kan da sagtens fjernes...

Forstår ikke hvorfor du afviser mine svar når det nu engang virker!?

//Thomas
Avatar billede tbpoulsen Nybegynder
05. februar 2001 - 19:14 #15
ad 1 - ok

ad 2 - ideen er at undgå at pege hele vejen tilbage til roden hvis den del hvor scriptet køres fra er en selvstændig underdel af sitet - f.eks hvis alt html ligger i en mappestruktur i stil med www.mitsite.dk/revlogkrat/biler/honda/previa.shtml - /revlogkrat/ indeholder med andre ord en frygtelig bunke andre mapper der ikke har noget med \"biler\" at gøre - jvf. det indledende spørgsmål. Man kan selvfølgelig ændre mappestrukturen, men hvis man nu ikke kan/må det er fanden løs i laksegade (læs: scriptet peger tilbage på noget der ikke har en pind med \"biler\" at gøre

ad 3 - jeg har forsøgt men det virker ikke - kildekoden er her [kode]
<html>
                          <head><!-- !DESC urltest -->
                          <title>test af url2.pl</title>
                          </head>

                          <body>
    <!--#exec cgi=\"./cgi-bin/url2.pl\" -->
          </body>
</html>

ad 4 - næh det er vel ok, men hvis man nu vil undgå den \"reload\" effekt det giver hvis man skulle forsøge at klikke på lænken ville det være fedt hvis du har en løsning.

jeg har lige et spørgsmål mere: i scriptet står der  $sti = \"/www/x-p.dk/web\"; den har jeg ændret men hvad gør den?

og endelig mht afvisning af svar så har jeg ikke fået svaret på mit indledende spørgsmål jvf. pkt 2.... men da du har svaret så beredvilligt på alle mine andre (dumme) spørgsmål er dit svar hermed accepteret!

venlig hilsen og STOR TAK

torsten
Avatar billede Thomas Nybegynder
05. februar 2001 - 19:31 #16
Hvis det er fast at fx. et eller andet underdirectory er \"øverst i kæden\", så kan jeg sikkert godt bygge lidt ind der gør at der startes derfra som forside. Det finder jeg lige ud af.

Årsagen til at !DESC ikke kan læses har du næsten selv svaret på... det er nemlig $sti der skal rettes.. det havde jeg glemt alt om da jeg skrev vejledningen.... Nu ved jeg ikke hvor du har dit site på en Windows eller linux maskine, men det skulle ihvf. kunne ses hos din udbyder hvad den korrekte sti skal være. Ellers så sig hvor du har det liggende, så skal jeg finde ud af det for dig (o:

$sti skal være korrekt fra starten af... ellers dutter det ikke!

Hvad angår sidste punkt, så ser jeg lige om jeg kan mixe et nyt script sammen!
Avatar billede Thomas Nybegynder
05. februar 2001 - 19:58 #17
Her er en version hvor linket ikke bliver dannet allersidst.... (o: Den anden med hvor man selv vælger hvilket directory der er \"øverst\" må lige vente lidt.. men jeg skal nok kigge på det.

#!/usr/bin/perl
########################################################
##### Script lavet af Thomas Palm
##### Dette script laver links til stien som man har
##### været igennem.
########################################################
print \"Content-type:text/html\\n\\n\";

@niveauer = split(/\\//,$ENV{\'REQUEST_URI\'});
$antal = $#niveauer;
$font = \"<font color=#6666aa>\";
$sti = \"/www/x-p.dk/web\";

print \"<a href=\\\"/\\\">$font forside</a>\";

for $tael (1..$antal) {
    $mitlink = \'/\';
    for $link (1..$tael) {
        $mitlink=$mitlink.$niveauer[$link].\"/\";
    }


    $thispagelink = \"denne side\";
    $stif = \"$sti$mitlink\";
    chop($stif);
    if (-f $stif) {
        open (side, \"<\" . $stif);
        @htmlside = (<side>);
        $htmllinier = $#htmlside;
        close (side);
        for $temp (0..$htmllinier) {
            $_ = $htmlside[$temp];
            if (/!DESC/) {
                $thispagelink = $_;
                $thispagelink =~ s/<!-- //g;
                $thispagelink =~ s/ -->//g;
                $thispagelink =~ s/!DESC //g;
            }
        }
    }

    $niveauer[$tael] =~ s/[a-z]+.shtml/$thispagelink/g;
    chop($mitlink); # fjern / tilsidst
    if (-f $stif) {
        print \"&nbsp;/&nbsp;$font\".$niveauer[$tael];
    } else {
        print \"&nbsp;/&nbsp;<a href=\\\"$mitlink\\\">$font\".$niveauer[$tael].\"</a>\";
    }
}
Avatar billede Thomas Nybegynder
05. februar 2001 - 20:00 #18
Btw; vær opmærksom på at du får det bedste resultat hvis du skriver <!-- !DESC linien på en linie for sig selv.. ellers kan du resikere at få nogle uøsnkede tegn med i beskrivelsen...
Avatar billede tbpoulsen Nybegynder
07. februar 2001 - 14:27 #19
tak for det nye script - jeg har desværre ikke haft tid til at teste det endnu - det må vente til efter vinterferien ;-) mht til <-- !DESC og sti lider det samme skæbne.
mht fast forside scriptet (din første kommentar fra 5/2) haster det ikke men jeg glæder mig til at se det når du har fundet tid til at brygge det sammen.

torsten

Avatar billede logout Nybegynder
07. februar 2001 - 14:52 #20
Jeg synes du skal kaste dig over asp ... scriptet er lige klar til brug :o)
Go\' ferie
Avatar billede Thomas Nybegynder
07. februar 2001 - 15:14 #21
tbpoulsen>>
Har du rettet $sti så det passer til din egen server???? Ellers dutter det ikke! (jeg kan ihvf. sagtens få det til at virke).

Anden fast forside må lige vente lidt, men jeg skal nok se på det her en af dagene.. (o:

Jeg har fået pointene for scriptet, så er du evt. interesseret i at jeg sender pr. e-mail i stedet for når den tid kommer??? Hvis ja, så må du godt skrive din e-mail adresse (eller skrive til mig på thomas@x-p.dk)

//Thomas
Avatar billede tbpoulsen Nybegynder
08. februar 2001 - 09:41 #22
Jeg har ikke haft tid til at se på stien (NTserver, btw) og når det ikke før om 10 dage (skiferie). mht det andet script så post det bare her - så kan andre få glæde af det. Hvis det er dig inderligt imod at poste det - så er min mailadresse torsten@imv.au.dk

vh
torsten
Avatar billede Thomas Nybegynder
08. februar 2001 - 11:33 #23
tbpoulsen>>
Jeg poster bare resultatet her, når jeg har lavet en anden version altså! (o:

Hvad angår $sti, så er det på en ntserver lidt anderledes.. Der skal man vistnok (hæng mig ikke op på det) angive sin sti som noget i retning af d:\\web, eller også er det noget med dobbelte \\\\... Så det må du selv prøve at undersøge! Hvis det så også skal virke i scriptet med \\\\, skal alle / i scriptet (fx. $mitlink) ændres!

//Thomas
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester