php - 动态面包屑 URL

标签 php html css breadcrumbs

我在网上找到了这段代码,它几乎可以满足我的要求,但只有几个问题。

当我单击主页选项卡时,它会在域前面添加 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/

相关文章:

php - OAuth-Wrap 初学者教程

PHP MySQL 漏洞

html - 如何将文本垂直对齐到列表的中间

css - 带有 Flexbox 的两列垂直编号列表

html - 在其下方添加一些内容后,Css Hover 无法正常工作

html - 试图用 CSS 填充 SVG,但不起作用

php - MySQL - 如何从最小/最大值获取最小/最大日期

PHP、MySQL、SELECT 问题

javascript - 我的 JavaScript 动画有什么问题?

javascript - 手动 slider 不应在透明区域可见