Avatar billede thulstrup Nybegynder
28. februar 2003 - 09:26 Der er 9 kommentarer og
2 løsninger

Du er her

Hvordan laver man en oversigt over hvordan man er kommet frem til nuværende side, ligesom f.eks. her på eksperten:

Du er her : Eksperten : Programmering : Script : PHP : Spørgsmål oversigt :
Avatar billede Slettet bruger
28. februar 2003 - 09:48 #1
Hmmm det kommer meget an på, hvordan din hjemmeside er kodet!
På min egen www.reginscorner.dk er alt indholdet (siderne) struktureret i en database, hvor ved det meste af denne proces klares med et par liniers kode et sted.
I de fleste tilfælde skal du nok ind og kode det flere steder på flere forskellige sider.

Har dog lavet nedenstående klasse til en "Du er her:" også kaldet "breadcrumb"!
class breadcrumb
{
    var $content;
    var $links;
    var $visual;
   
    function breadcrumb()
    {
        global $ABSOLUTPATH;/*På eksperten ville denne være http://www.eksperten.dk/ eller http://www.exp.dk/ , sættes et andet sted i scriptet*/
        $this->content = array("Forside");
        $this->links = array($ABSOLUTPATH."index.php");
        $this->visual = "";
    }
   
    function addbreadcrumb($content, $tlink)
    {
        $this->content[] = $content;
        $this->links[] = $tlink;
    }
   
    function merge($breadcrumb, $place = "behind")
    {
        if($place == "behind")
        {
            $this->content = array_merge($this->content, $breadcrumb->content);
            $this->links = array_merge($this->links, $breadcrumb->links);
        }
        elseif($place == "front")
        {
            $this->content = array_merge($breadcrumb->content, $this->content);
            $this->links = array_merge($breadcrumb->links, $this->links);
        }
    }
   
    function deletebreadcrumb($index)
    {
        $newcontent = array();
        $newlink = array();
        for($i=0;$i<count($this->content);$i++)
        {
            if($i!=$index)
            {
                $newcontent[] = $this->content[$i];
                $newlink[] = $this->links[$i];
            }
        }
        $this->content = $newcontent;
        $this->links = $newlink;
    }
   
    function show()
    {
        $seperator = " &gt;&gt; ";
       
        for($i=0;$i<count($this->content);$i++)
        {
            if($i!=(count($this->content)-1))
            {
                $this->visual .= "<a href=\"".$this->links[$i]."\">".$this->content[$i]."</a>";
            }
            else
            {
                $this->visual .= $this->content[$i];
            }
            if($i!=(count($this->content)-1))
            {
                $this->visual .= $seperator;
            }
        }
        return $this->visual;
    }

}

Eksempel på brug:
$breadcrumg = new breadcrumb();
$breadcrumb->addbreadcrumb("Programmering", "http://www.eksperten.dk/kat/1");
$breadcrumb->addbreadcrumb("Script", "http://www.eksperten.dk/kat/332");
$breadcrumb->addbreadcrumb("PHP", "http://www.eksperten.dk/kat/2");
echo $breadcrumb->show();
Avatar billede basicq Nybegynder
28. februar 2003 - 09:48 #2
Prøv det her.

$root = $SERVER_NAME;
$map = $REQUEST_URI;
$rootmap = "<a href=http://$root$map>du befinder dig her <b>http://$root$map</b></a>";
echo $rootmap;
Avatar billede jensgram Nybegynder
28. februar 2003 - 14:53 #3
Hvis du har struktureret dit site som domæne.tk/mappe/undermappe/side.html, så kan du bruge:

// Indsæt breadcrumb

function breadcrumb($dir)
{
    $root    = "http://www.domæne.dk/";
    $dirs    = explode("/", $dir);
    $sizeof  = sizeof($dirs)-1; // minus én, da array starter ved nul
    $ud      = "<a href=\"" . $root . "\">Forside</a>"; // altid dette
    $divider  = " -&gt; "; // mellemrum mellem links
    $filnavn  = substr($dirs[$sizeof], 0, strrpos($dirs[$sizeof], ".")); // finder filnavn (mellem begyndelse og (sidste) punktum)
    $forbudte = array("index", "source", "error"); // filer, der ikke skal vises

    for ($i = 1; $i < $sizeof; $i++) { // ikke første og sidste i array $dirs (sizeof = -1)
        $ud  .= $divider . "<a href=\"" . $root . $dirs[$i] . "/\">" . ucfirst(str_replace("_", " ", $dirs[$i])) . "</a>"; // skriv _ som mellemrum i fil/dirnavn
        $root .= $dirs[$i] . "/";
    }

    if (!in_array($filnavn, $forbudte)) {
        $ud .= $divider . "<a href=\"" . $root . $dirs[$sizeof] . "\">" . ucfirst(str_replace("_", " ", $filnavn)) . "</a>";
    }

    return $ud;

}
Avatar billede thulstrup Nybegynder
28. februar 2003 - 17:25 #4
Tak for jeres bud! Jeg kigger lige på det og vender hurtigst muligt tilbage.
Avatar billede sukos Juniormester
28. februar 2003 - 20:20 #5
Der er osse den her: :O)

$path = explode("/", $_SERVER['PHP_SELF']);
$dirs = count($path);
$home = "http://". $_SERVER['HTTP_HOST']; //evt. også med www

echo "<a href=\"". $home ."\">Forsiden</a> ";

for ($i = 1; $i < $dirs; $i++) {
    if (!preg_match ("/.php/", $path[$i])) {
$home = $home . "/" . $path[$i];
    echo " - <a href=\"". $home ."/\">$path[$i]</a>";
}else{
if($path[$i] == "index.php") {
$path[$i] = "";
}
if(!empty($_SERVER['QUERY_STRING'])) {
$string = "?".htmlentities($_SERVER['QUERY_STRING']);
}else{
$string = "";
}
    echo " - ". $path[$i] . $string;
        }

    }
Avatar billede thulstrup Nybegynder
09. april 2003 - 19:12 #6
Undskyld, havde glemt alt om spørgsmålet. Bare lig et svar.
Avatar billede jensgram Nybegynder
09. april 2003 - 21:24 #7
Svar herfra. Giv mig kun points, hvis du kunne bruge mit indlæg ;)
Avatar billede jensgram Nybegynder
09. april 2003 - 21:24 #8
... eller ... dette er et svar :P
Avatar billede Slettet bruger
09. april 2003 - 21:56 #9
Samme her som med mr_noname!
Avatar billede thulstrup Nybegynder
15. april 2003 - 10:11 #10
Jeg fik ikke brug for det alligevel, men tak for jeres hjælp.
Avatar billede jensgram Nybegynder
15. april 2003 - 13:42 #11
så lidt ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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