支持Laravel.io的持续发展 →

如何在Laravel网站上添加面包屑导航

24 Aug, 2021 8 min read

简介

面包屑是一个很好的方法来提升您的应用程序和网站的 UI(用户界面)和 UX(用户体验)。它们可以减少用户迷路的可能性,并使用户更容易在您的网站上导航。

在本文中,我们将介绍什么是面包屑,它们的优点以及如何在您的 Laravel 网站或应用程序中添加它们。

如果您对了解如何以不同的方式改进您的网站感兴趣,请务必查看我最近的另一篇文章《17 Ways to Get Your Website Ready to Win》。

使用面包屑的优点是什么?

面包屑来源于《Hansel and Grettel》的故事,这是一个关于一对兄妹在森林中留下面包屑以找到返回路的故事。在网页开发中,面包屑以同样的方式工作;它们为我们留下了一条路,这样我们就可以知道我们在系统中哪里,以及如何返回。

您几乎肯定之前遇到过面包屑。例如,让我们假设我们正在一个服装网站上,并且我们正在查看男士衬衫。您可能会在页面上方看到类似的内容

<u>首页</u> > <u>男士服装</u> > T-shirts

这是一个路径导航,显示我们目前在男士T恤页面。通常,每个“碎片”都是一个可以带您返回另一个页面的链接。

路径导航的优点在于

  1. 它们可以降低跳出率并减少用户迷路的风险。如果用户对自己的网站或应用程序位置感到困惑,他们可能会感到沮丧。有时这会导致他们离开。因此,路径导航通过为用户提供更多位置可见性来解决这个问题。
  2. 它们为访客或用户提供“向上移动一层”的方式。例如,让我们假设一个访客在Google中搜索了“男士T恤”,并着陆在您的网站T恤页面。但现在他们想查看您提供的其他男士服装。他们不必去网站的导航,他们可以点击“男士服装”向上移动一层。通过以简单的方式呈现路径导航,您已允许用户直接导航到其导航而无需四处查找。
  3. 如果您的路径导航设置正确,它们在SEO方面非常有用。它们帮助搜索引擎爬虫更好地了解您网站页面的结构。这种结构有时会显示在您的搜索引擎结果中。

如果您想要了解更多关于使用路径导航的好处,请查看由Nielsen Norman GroupInfidigit撰写的这两篇文章。

如何将其添加到您的Laravel网站

要将路径导航添加到您的Laravel项目中,我们将使用diglactic/laravel-breadcrumbs包。我已在多个项目中使用过这个包,从小型网站到相当大的应用程序,我总是发现它设置起来非常简单,也很容易使用。

安装和配置

让我们首先使用以下命令使用Composer安装该包

composer require diglactic/laravel-breadcrumbs

现在我们已经安装了包,我们可以使用以下命令发布配置文件

php artisan vendor:publish --tag=breadcrumbs-config

现在您应该有一个新创建的config/breadcrumbs.php文件,您可以使用它来编辑包的配置。在本文中,我们只关注配置文件中的view选项。但请随意探索文件并根据您的需求进行更改。

默认情况下,当我们向页面输出路径导航时,该包将使用Bootstrap 5进行样式设计。因此,如果您使用Bootstrap 5进行UI样式设计,您可能不需要立即进行任何更改。

但是,如果您使用Tailwind进行CSS,您可以在breadcrumbs.php配置文件中的view选项中进行更新,使包使用Tailwind进行渲染而不是Bootstrap。在这种情况下,您可以像这样更新您的配置文件

return [

    // ...
  
    'view' => 'breadcrumbs::tailwind',
  
    // ...
  
];

为您的路径导航使用自定义样式

就我个人而言,我非常喜欢Tailwind版本路径导航的默认样式。但是,如果您发现您想要一个更独特的设计,您可以轻松地自己添加。

首先,您可以创建一个新的resources/views/partials/breadcrumbs.blade.php文件。该文档提供了一份方便的模板,您可以直接将其放入此文件以开始使用

@unless ($breadcrumbs->isEmpty())
    <ol class="breadcrumb">
        @foreach ($breadcrumbs as $breadcrumb)

            @if (!is_null($breadcrumb->url) && !$loop->last)
                <li class="breadcrumb-item"><a href="{{ $breadcrumb->url }}">{{ $breadcrumb->title }}</a></li>
            @else
                <li class="breadcrumb-item active">{{ $breadcrumb->title }}</li>
            @endif

        @endforeach
    </ol>
@endunless

您现在可以向此模板添加自己的样式和结构,使其更符合您的应用程序或网站的设计。在以前的项目中,我使用过这种方法,这样我就可以使用Tailwind UI中的样式添加路径导航。

要使用我们的自定义样式,您只需更新配置文件即可。我们只需要更改 view 字段,让它指向我们刚刚创建的新 Blade 文件。以下是一个示例

return [  

    // ...
  
    'view' => 'partials/breadcrumbs',
  
    // ...

];

定义面包屑

现在我们已经为这个包设置了配置,我们可以开始定义我们的面包屑,准备显示。

在我们开始定义任何面包屑之前,让我们看看这个基本的示例 routes/web.php 文件

<?php

use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;

Route::get('/users', [UserController::class, 'index'])->name('users.index');
Route::get('/users/{user}', [UserController::class, 'show'])->name('users.show');
Route::get('/users/{user}/edit', [UserController::class, 'edit'])->name('users.edit');

这个包通过我们为每个路由定义一个面包屑来工作。所以,在这个特定的例子中,因为我们有 3 个路由,所以我们需要定义 3 个面包屑。

为了做到这一点,我们首先需要定义一个新的空 routes/breadcrumbs.php 文件。创建后,我们可以添加我们的第一个面包屑

use App\Models\User;
use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;

Breadcrumbs::for('users.index', function (BreadcrumbTrail $trail): void {
    $trail->push('Users', route('users.index'));
});

让我们快速看看上面的代码在做什么。我们基本上为一个可以通过 users.index 路由访问的页面定义了一个面包屑。然后我们告诉这个包将 Users 推到显示的栈上,并带有链接到 users.index 页面。

我们将定义其他路由,并再次查看我们的面包屑文件可能的样子

use App\Models\User;
use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;

Breadcrumbs::for('users.index', function (BreadcrumbTrail $trail): void {
    $trail->push('Users', route('users.index'));
});

Breadcrumbs::for('users.show', function (BreadcrumbTrail $trail, User $project): void {
    $trail->parent('users.index');

    $trail->push($user->name, route('users.show', $user));
});

Breadcrumbs::for('users.edit', function (BreadcrumbTrail $trail, User $project): void {
    $trail->parent('users.show');

    $trail->push('Edit', route('users.edit', $user));
});

在上面的行中,我们为另外两个路由定义了两个更多的面包屑。

对于第一个路由,我们添加了一个面包屑,它将用户的名称作为链接推到 'show' 路由的栈上。如果我们在这个浏览器导航到这个路由,面包屑的结构如下示例

<u>Users</u> > Ash Allen

对于第二个路由,我们添加了一个面包屑,它将 'Edit' 推到栈上作为用户显示路由的链接。如果我们在这个浏览器导航到这个路由,面包屑的结构如下示例

<u>Users</u> > <u>Ash Allen</u> > 编辑

显示面包屑

我们几乎完成了!现在我们已经定义了面包屑,我们可以将它们输出到我们的页面上,让我们的访客开始使用。要做到这一点,我们只需要找到我们在 Blade 视图文件中想要渲染它们的地方,然后添加

{{ Breadcrumbs::render() }}

就这样!这就是您需要做的全部内容!

现在您应该在页面上看到您的面包屑,并可以点击不同的链接在页面间导航。

这个包相当详细,所以我肯定推荐您查看他们的文档,看看您还可以做哪些酷炫的事情。

结论

希望这篇文章解释了使用面包屑的好处以及它们如何帮助您的用户。它还应该给了您如何在您自己的 Laravel 应用程序中轻松添加它们的见解。

如果您这篇文章帮助了您,我很乐意听听。同样,如果您有任何改进这篇博客的反馈,我也很乐意听听。

如果您想每次我发布新文章时都收到更新,请随意 订阅我的通讯

继续构建出色的东西! 🚀

上次更新 1 年前。

joedixon, driesvints, jinas123, riperfish, ash-jc-allen, assadikimaryem, maxiewright, jadamec, kenny201, publicmailcollector 等人都喜欢这篇文章

11
喜欢这篇文章? 让作者知道并为他们鼓掌!
ash-jc-allen(Ash Allen) 我是来自英国普雷斯顿的 freelance Laravel 网页开发者。我维护 Ash Allen Design 博客,并参与了许多酷炫和令人兴奋的项目 🚀

你可能还喜欢其他文章

2024年3月11日

如何使用Larastan将你的Laravel应用从0到9

在Laravel应用执行前发现错误是可能的,多亏了Larastan,它...

阅读文章
2024年7月19日

没有特性标准化的API响应

我注意到大多数用于API响应的库都是使用特性实现的,并且...

阅读文章
2024年7月17日

在Laravel项目中通过Discord通知收集反馈

如何在Laravel项目中创建反馈模块,并在接收到消息时收到Discord通知...

阅读文章

我们感谢这些 令人惊叹的公司 支持

这里也有你的标志吗?

Laravel.io

Laravel的问题解决、知识分享和社区建设的门户。

© 2024 Laravel.io - 版权所有。