php - 简单的动态面包屑

标签 php dynamic breadcrumbs

我认为这个脚本对这里的任何菜鸟都很感兴趣:) 包括我:)

我想要创建的是一个可以在任何文件中使用的小代码,并会生成如下所示的面包屑:

如果文件名为“website.com/templates/index.php”,面包屑应该显示:

Website.com > Templates

 ^^ 链接                    ^^纯文本

如果文件名为“website.com/templates/template_some_name.php”,面包屑应该显示:

Website.com > Templates > Template Some Name

 ^^ 链接                  ^^链接                ^^纯文本

最佳答案

这对于简单的面包屑来说可能有点过头了,但值得一试。我记得很久以前我刚开始的时候就有这个问题,但我从来没有真正解决过。也就是说,直到我现在才决定写这个。 :)

我已尽我所能内联记录,底部是 3 个可能的用例。享受! (如有任何问题,请随时提出)

<?php

// This function will take $_SERVER['REQUEST_URI'] and build a breadcrumb based on the user's current path
function breadcrumbs($separator = ' &raquo; ', $home = 'Home') {
    // This gets the REQUEST_URI (/path/to/file.php), splits the string (using '/') into an array, and then filters out any empty values
    $path = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));

    // This will build our "base URL" ... Also accounts for HTTPS :)
    $base = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/';

    // 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>");

    // Find out the index for the last value in our path array
    $last = end(array_keys($path));

    // Build the rest of the breadcrumbs
    foreach ($path AS $x => $crumb) {
        // Our "title" is the text that will be displayed (strip out .php and turn '_' into a space)
        $title = ucwords(str_replace(Array('.php', '_'), Array('', ' '), $crumb));

        // If we are not on the last index, then display an <a> tag
        if ($x != $last)
            $breadcrumbs[] = "<a href=\"$base$crumb\">$title</a>";
        // Otherwise, just display the title (minus)
        else
            $breadcrumbs[] = $title;
    }

    // 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>

关于php - 简单的动态面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2594211/

相关文章:

php - 在无限滚动中使用 AJAX 和 PHP 从表中获取结果?

ajax - 使用 Ajax 的动态 Flot 图表

javascript - 如何强制浏览器再次解析MathML内容?

c# - 在 C# 中动态实现接口(interface)的最佳方式是什么?

magento - 如何显示 magento 联系页面面包屑?

javascript - 通过JQuery加载php页面时出错

php - Zend 2 错误 : Uncaught exception 'Zend\Stdlib\Exception\InvalidArgumentException'

iphone - 如何使面包屑具有响应性?

css - 如何将 CSS 背景图像保持在所有 div(面包屑箭头)之上?

PHP 在网络共享上创建文件