动态面包屑URL

时间:2014-07-16 11:16:43

标签: php html css breadcrumbs

我已经在网上找到了这个代码,它几乎完成了我想要的东西,但只有一些问题。

当我点击主页面选项卡时,它会在域名前面添加https,并说该网站不可用,但如果我删除了它,则可以使用。

在网站上也有像home>这样的标题。 aaa-bbb-ccc> aaa-bbb> aaa我将提供我们的旧面包屑代码,并且我想知道我们是否指定了面包屑的URL。

另外,当我在浏览器中查看面包屑中间的网站时,会出现Home> $ title>索引

旧面包屑:

    <?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();
?>

感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用

$base_url = "http://". $_SERVER['HTTP_HOST'] . "/"`

并删除该检查。这是因为首先检查$_SERVER['HTTPS'] ? 'https' : 'http')可能会返回https。仅在您拥有安全域时才使用它。这是一个&#39; https://&#39;域