Я начал с кода от Доминика Барнса, включил отзывы от cWoDeR, и у меня все еще были проблемы с сухарями на третьем уровне, когда я использовал подкаталог. Поэтому я переписал его и включил приведенный ниже код.
Обратите внимание, что я настроил структуру своего веб-сайта таким образом, чтобы страницы, которые должны быть подчинены (связаны с) страницей на корневом уровне, были настроены следующим образом:
Создайте папку с ТОЧНЫМ именем, совпадающим с именем файла (включая заглавные буквы), без суффикса, в качестве папки на корневом уровне
поместить все подчиненные файлы / страницы в эту папку
(например, если вы хотите иметь подчиненные страницы для Customers.php:
создайте папку с именем Customers на том же уровне, что и Customers.php
добавить файл index.php в папку «Клиенты», которая перенаправляет на страницу вызова для папки (см. Код ниже)
Эта структура будет работать для нескольких уровней подпапок.
Просто убедитесь, что вы следуете файловой структуре, описанной выше, и вставьте файл index.php с кодом, показанным в каждой подпапке.
Код на странице index.php в каждой подпапке выглядит следующим образом:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Redirected</title>
</head>
<body>
<?php
$root_dir = "web_root/" ;
$last_dir=array_slice(array_filter(explode('/',$_SERVER['PHP_SELF'])),-2,1,false) ;
$path_to_redirect = "/".$root_dir.$last_dir[0].".php" ;
header('Location: '.$path_to_redirect) ;
?>
</body>
</html>
Если вы используете корневой каталог сервера в качестве корневого веб-каталога (т. Е. / Var / www / html), тогда установите $ root_dir = "": (НЕ оставляйте завершающий "/" в). Если вы используете подкаталог для своего веб-сайта (т. Е. / Var / www / html / web_root, то установите $ root_dir = "web_root /"; (замените web_root на фактическое имя вашего веб-каталога) (не забудьте включить конечный /)
во всяком случае, вот мой (производный) код:
<?php
// Big Thank You to the folks on StackOverflow
// See /2250569/prostaya-dinamicheskaya-hlebnaya-kroshka
// Edited to enable using subdirectories to /var/www/html as root
// eg, using /var/www/html/<this folder> as the root directory for this web site
// To enable this, enter the name of the subdirectory being used as web root
// in the $directory2 variable below
// Make sure to include the trailing "/" at the end of the directory name
// eg use $directory2="this_folder/" ;
// do NOT use $directory2="this_folder" ;
// If you actually ARE using /var/www/html as the root directory,
// just set $directory2 = "" (blank)
// with NO trailing "/"
// This function will take $_SERVER['REQUEST_URI'] and build a breadcrumb based on the user's current path
function breadcrumbs($separator = ' » ' , $home = 'Home')
{
// This sets the subdirectory as web_root (If you want to use a subdirectory)
// If you do not use a web_root subdirectory, set $directory2=""; (NO trailing /)
$directory2 = "web_root/" ;
// This gets the REQUEST_URI (/path/to/file.php), splits the string (using '/') into an array, and then filters out any empty values
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ;
$path_array = array_filter(explode('/',$path)) ;
// This line of code accommodates using a subfolder (/var/www/html/<this folder>) as root
// This removes the first item in the array path so it doesn't repeat
if ($directory2 != "")
{
array_shift($path_array) ;
}
// This will build our "base URL" ... Also accounts for HTTPS :)
$base = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/'. $directory2 ;
// Initialize a temporary array with our breadcrumbs. (starting with our home page, which I'm assuming will be the base URL)
$breadcrumbs = Array("<a href=\"$base\">$home</a>") ;
// Get the index for the last value in our path array
$last = end($path_array) ;
// Initialize the counter
$crumb_counter = 2 ;
// Build the rest of the breadcrumbs
foreach ($path_array as $crumb)
{
// Our "title" is the text that will be displayed representing the filename without the .suffix
// If there is no "." in the crumb, it is a directory
if (strpos($crumb,".") == false)
{
$title = $crumb ;
}
else
{
$title = substr($crumb,0,strpos($crumb,".")) ;
}
// If we are not on the last index, then create a hyperlink
if ($crumb != $last)
{
$calling_page_array = array_slice(array_values(array_filter(explode('/',$path))),0,$crumb_counter,false) ;
$calling_page_path = "/".implode('/',$calling_page_array).".php" ;
$breadcrumbs[] = "<a href=".$calling_page_path.">".$title."</a>" ;
}
// Otherwise, just display the title
else
{
$breadcrumbs[] = $title ;
}
$crumb_counter = $crumb_counter + 1 ;
}
// Build our temporary array (pieces of bread) into one big string :)
return implode($separator, $breadcrumbs) ;
}
// <p><?= breadcrumbs() ? ></p>
// <p><?= breadcrumbs(' > ') ? ></p>
// <p><?= breadcrumbs(' ^^ ', 'Index') ? ></p>
?>