PHP-scripts

Mange hits?

Hits : 139733
Hits dag : 40
Online : 1

Breadcrumbsnavigation med PHP (v. 2018-03-23)

Download hele eksemplet som en pakket fil breadcrumbs.source.phps. [Downloads: 5]

Om breadcrumbs

Breadcrumbs er en type menu/navigation på en hjemmeside som viser hvor langt du er dykket ned i en hjemmesides indhold. Det kan f.eks. være baseret på mappehierakiet eller indelt efter kategori ved indhold gemt i en database. Typisk starter breadcrumbs med "Du er her: " efterfulgt af titler som er links og adskilt af et eller andet tegn, typisk en pil.

Denne udgave af breadcrumbs er baseret på hjemmesidens mappehierarki således at hvert emne er oprettet i en separat mappe og underemner i undermapper. Mappehierarkiet bruges af scriptet til at generere breadcrumbs. Et eksempel på et typisk mappehieraki og de resulterende breadcrumps:

breadcrumbs.source.phps

<?php
/**
 * Breadcrumbs with PHP
 * Version: 2018-03-23 22:28:00
 * Webpage: http://www.dunweber.com/docs/scripts/#breadcrumbs
 * Copyright (C) 2007-2018 Christian L. Dünweber
 * This program is distributed under the GNU General Public License,
 * see <http://www.gnu.org/licenses/gpl.html>.
 * 
 * Include this file and call function breadcrumbs():
 * 
 * include_once 'path/to/this/file/breadcrumbs.php';
 * echo breadcrumbs();
 */

/**
 * Reads the URI of the file who called this function and
 * links to each directory in the URI.
 * @return String - HTML-formatted string with breadcrumbs.
 */
function breadcrumbs()
{
    
// Reading the URI of the file who called this method.
    // All directories in the URI are put into an array
    
$uri $_SERVER['REQUEST_URI'];
    
$dirs explode('/'$uri);
    
$filename $dirs[count($dirs)-1];

    
// If the path of the file ends with "/" it is assumed
    // that the file name is index.php
    
if (!$filename) {
        
$filename 'index.php';
    }

    
$uris '/';

    
// Making links of all directories found in the URI
    
for ($i 1$i count($dirs)-1$i++) {
        
$uri_names $dirs[$i];
        
$uris .= $uri_names '/';
        
$uri_link '<a href="'.$uris.'">'.$uri_names.'</a>';
        
$uri_links[] = $uri_link;
    }

    
$uri_links[] = $dirs[$i];
    
array_pop($uri_links);

    
// Making the breadcrumb trail as a string
    
$crumbs 'Du er her: <a href="/">Forsiden</a> &rsaquo; ' join($uri_links' &rsaquo; ');

    
// Try to extract the text between the <title></title> tag
    // If nothing was found the file name of the page is used instead
    
if ($title extractTag(file_get_contents($filename), '<title>''</title>')) {
        if (
$uri == '/') {
            
$crumbs .= $title;
        }
        else {
            
$crumbs .= ' &rsaquo; ' $title;
        }
    }
    else {
        if (
$uri == '/') {
            
$crumbs .= $filename;
        }
        else {
            
$crumbs .= ' &rsaquo; ' $filename;
        }
    }

    
// The breadcrumb trail is returned
    
return '<div>' $crumbs '</div>';
}

/**
 * Extracts the content between a <tag></tag> in a HTML string.
 * I.e. <title>Hello</title> yields the string "Hello".
 * @param $str - String to search through.
 * @param $startTag - Start tag, e.g. <title>.
 * @param $endTag - End tag, e.g. </title>.
 * @return String - Extracted content of tag else false.
 */
function extractTag($str$startTag$endTag)
{
    
preg_match('~'.$startTag.'(.*?)'.$endTag.'~iu'$str$matches);
    return 
$matches[1];
}
?>

» Til toppen