我在网上找到了这段代码,它几乎可以满足我的要求,但只有几个问题。
当我单击主页选项卡时,它会在域前面添加 https,并显示此网站不可用,但如果我删除 s,它会正常工作。
网站上还有类似 home > aaa-bbb-ccc > aaa-bbb > aaa 的标题,我将提供我们拥有的旧面包屑代码,我想知道我们是否指定面包屑的 url。
此外,当我在面包屑中间的浏览器中查看网站时,会出现 Home > $title > index
旧面包屑:
<?php
/*
Copyright Justin Whitford 2006.
http://www.whitford.id.au/
Perpetual, non-exclusive license to use this code is granted
on the condition that this notice is left in tact.
*/
function breadcrumbs(){
$bread = explode('/', $_SERVER['PHP_SELF']);
$url = '/';
$returnString = "<span class='bc0'><a href='$url'>Home</a>";
for($i=1;$i<count($bread)-1;$i++){
$url.=$bread[$i].'/';
$returnString .= " ></span> <span class='bc$i'><a href='$url'>"
.prettify($bread[$i])."</a>";
}
echo $returnString.'</span>';
}
function prettify($dirName){
$directoryName['aaa-bbb-ccc']='Locate Us';
$directoryName['aaa-bbb']='Contact';
$directoryName['breadcrumbs']='Foe';
if($directoryName[$dirName]!=''){
$dirName=$directoryName[$dirName];
}else{
$dirName = str_replace('_', ' ', $dirName);
$dirName = str_replace('%20', ' ', $dirName);
$dirName = ucwords(strtolower($dirName));
}
return $dirName;
}
这是我的新代码:
<?php
function breadcrumbs($separator = ' > ', $home = 'Home') {
$path = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
$base_url = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/';
$breadcrumbs = array("<a href=\"$base_url\">$home</a>");
$last = end(array_keys($path));
foreach ($path AS $x => $crumb) {
$title = ucwords(str_replace(array('.php', '_'), Array('', ' '), $crumb));
if ($x != $last){
$breadcrumbs[] = '<a href="$base_url$crumb">$title</a>';
}else{
$breadcrumbs[] = $title;
}
}
return implode($separator, $breadcrumbs);
}
echo breadcrumbs();
?>
谢谢。
最佳答案
尝试使用
$base_url = "http://". $_SERVER['HTTP_HOST'] . "/"`
并删除该检查。这是因为首先检查 $_SERVER['HTTPS'] ? 'https' : 'http')
可能会返回 https
。仅当您拥有安全域时才使用它。那是一个“https://”域
关于php - 动态面包屑 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779385/