Lav bread crumbs med asp

Siden er opdateret 24. 1. 2006

Der findes flere slags navigation, der kan sættes på en hjemmeside. Den mest brugte - og den absolut mest nødvendige - er en menu. Det kan så suppleres med et Site Map. En tredje mulighed, som i øvrigt ikke kan erstatte de to andre, er bread crumbs.

Bread crumbs er den slags links, du ser på bl.a. denne side, lige under det store lyseblå tekst 'Hjemmesideskolen' øverst på siden. Bread Crumbs fortæller brugeren, hvor præcist på sitet, han/hun befinder sig netop nu.

Den her viste teknik forudsætter, at du kan køre asp på din server. Bread Crumbs kan også laves med php eller med javascript.

Brug kun javascript-løsningen, hvis du ikke har andre muligheder, søgemaskiner kan ikke bruge det. Derimod kan både .php- og .php-løsningerne indekseres af f.eks. Google, hvorved dine sider rates lidt højere (flere links til siderne).


Det første, du skal gøre, for at få dette script til at virke fuldt ud, er, at du før header på dine sider indsætter denne kode:

<%
$strTitle="Indsæt ønsket tekst til sidetitel her"%>

Koden skal altså stå før din doctypedefinition, se herom på siden om at starte en ny side. Din hjemmesides <head>-sektion kan hermed komme til at se således ud:

<%
$strTitle="Indsæt ønsket tekst til sidetitel her"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title><% echo $strTitle%></title>
<link href="din.css" rel="stylesheet" type="text/css" />
<link href="dinp.css" rel="stylesheet" type="text/css" media="print" />
<link rel="shortcut icon" href="favicon.ico" />
</head>

Med asp-koden i title genbruges den titel, der blev indsat i første linje. Den vågne læser vil på nuværende tidspunkt protestere og sige, at ved at indsætte kode før DTD vil MS IE da gå i quirks-mode. I dette tilfælde er svaret nej. Prøv at se kildekoden til denne side. Asp-koden er blevet afviklet på serveren og er ikke sendt med til browseren.

Når header er blevet forberedt som beskrevet ovenfor, indsættes på ønsket sted i body denne asp-kode:

<!--#include file="breadcrumbs.php"--><%=breadcrumbs()%>
- <% echo $strTitle%>

Først kalder vi en fil - breadcrumbs.php, derefter kalder vi funktionen breadcrumbs, der defineres i den kaldte asp-fil. Sidst i koden kalder vi igen den titel, der blev defineret i dokumentets første to linjer kode - og som først blev genbrugt i title. Her bruger vi teksten til at vise det aktuelle dokument sidst i 'bread crumbs'-listen.

Og dette er indholdet af breadcrumbs.php:

<%
Function BreadCrumbs()
  Dim lstrPathAry
  Dim llngIndex
  Dim llngMaxIndex
  Dim lstrPath
  Dim lstrHTML

  lstrPathAry = Split(Request.ServerVariables("PATH_INFO"), "/")

  llngMaxIndex = UBound(lstrPathAry) - 1

  lstrHTML = "Du er her: "

  lstrPath = "/"
  lstrHTML = lstrHTML & "<a href=""" & lstrPath & """>Forsiden</a> "

  For llngIndex = 1 To llngMaxIndex
    lstrPath = lstrPath & Server.URLPathEncode(lstrPathAry(llngIndex)) & "/"
    lstrHTML = lstrHTML & "- <a href=""" & lstrPath & """>" & Server.HTMLEncode(lstrPathAry(llngIndex)) & "</a>"
  Next

  BreadCrumbs = lstrHTML

End Function
%>

To steder i asp-koden kan du se, at der står <a href=.... På de steder i koden kan du evt. indsætte et passende klassekald, så du kan style udskriften på siden.


Du er nu næsten klar med din bread crumb navigation. Der mangler bare lige en enkelt lille detalje, før det hele fungerer. Hvis du holder markøren hen over 'bread crumb'-linjen øverst på denne side, vil der ved de første to stumper tekst (Forsiden og scripts) i statuslinjen komme til at stå:

   http://hjemmesideskolen.dk/
   http://hjemmesideskolen.dk/scripts/

Disse to ord fungerer altså som links til mapper. Men for at det kan virke som links til faktiske sider, skal der i mapperne ligge en side, der har det serverbestemte defaulte navn. Når jeg skriver 'serverbestemte', er det fordi der ikke er nogen fast regel for, hvad denne side skal hedde. Jeg kan give nogle eksempler:

Azero - muligheder i nævnte prioritetsrækkefølge:
default.php, default.php, default.shtml, default.html, default.htm,
index.php, index.php, index.shtml, index.html, index.htm
UnoEuro - mulighederne afhænger af valgt servertype:
index.php, index.shtml, index.html, index.htm eller
index.php, index.html, index.html

Du må med andre ord tjekke hos dit web-hotel, hvad siden skal hedde.

Eller du kan lave et par sider næsten uden indhold og døbe dem "default.html" og "index.html". Læg dem ud i en mappe på serveren og i en browser kalder du nu mappen uden at angive et sidenavn. Derved får du den serverbestemte defaulte side. Når du har detekteret det, kan du slette den anden og i stedet kopiere den fundne side med nye endelser: .htm, .shtml, .asp og .php. Kald mappen igen og se hvilken side du faktisk får.

Når du har fundet ud af, hvad siden skal hedde, er det blot at lave en helt tom side, der laver en øjeblikkelig viderestilling til en at dig valgt side, f.eks. forside.php:

<%
Response.Redirect "forside.php"
%>

^ Tilbage til sidens top

Valid XHTML og CSS / Copyright © Hjemmesideskolen marts 2004
Hjemmesideskolen
Du er her: Forsiden - scripts - Lav bread crumbs med asp
Brugere lige nu: 1
Home Mail