archtechx/laravel-pages

通过创建Markdown或Blade文件轻松添加路由到您的Laravel应用。

v0.3.0 2024-03-13 13:47 UTC

This package is auto-updated.

Last update: 2024-09-13 14:59:05 UTC


README

此包允许您使用Markdown或Blade创建页面,无需担心创建路由或控制器。

本质上,您创建 content/pages/foo.mdresources/views/pages/foo.blade.php,页面将在 /foo 路由上可访问。

Markdown文件使用预定义的Blade视图进行渲染。Blade文件适用于不遵循默认布局且需要更多自定义样式的页面。

例如,您可以为 /pricing 路由使用Blade文件(pages/pricing.blade.php),它有一个与定价副本相匹配的精美设计。

而对于 /about,您可以使用简单的Markdown文件(content/pages/about.md),使用纯文本描述您的服务,没有任何特殊图形元素。

我们在ArchTech网站上使用此功能——关于职业开源页面都是简单的Markdown文件。

安装

通过composer要求包

composer require archtechx/laravel-pages

发布配置文件

php artisan vendor:publish --tag=archtech-pages-config

最后,将此行添加到您的routes/web.php文件的末尾

ArchTech\Pages\Page::routes();

此行将注册路由,以确保您的路由具有优先级,并且页面路由仅作为最后的选择使用。

重要:在尝试访问此包管理的URL之前,请确保您已将其配置为使用正确的布局(请参阅以下部分)。否则,您可能会收到一个错误,表明无法找到视图。

使用

Markdown页面

要创建Markdown文件,在content/pages/中创建一个文件。页面的路由将与文件名匹配(不带.md)。

例如,要创建/about页面,创建content/pages/about.md并包含以下内容

---
slug: about
title: 'About us'
updated_at: 2021-05-19T19:09:02+00:00
created_at: 2021-05-19T19:09:02+00:00
---

We are a web development agency that specializes in ...

Blade页面

要创建Blade页面,在resources/views/pages/中创建一个文件。与Markdown示例一样,页面的路由将与文件名匹配(不带扩展名)。

因此,要创建/about页面,您需要创建resources/views/pages/about.blade.php

<x-app-layout>
    This view can use any layouts or markup.
</x-app-layout>

配置

您可能需要配置一些内容,最可能的是使用的布局。

为此,只需修改config/pages.php

配置文件允许您更改

  • 使用的模型
  • 使用的控制器
  • Markdown视图使用的布局
  • 渲染Markdown页面使用的视图文件
  • 路由细节

布局是由供应商(提供的包)的Markdown视图使用的。您可能希望将其设置为类似app-layoutlayouts.app的内容。

如果您想更改渲染Markdown本身的文件,创建resources/views/pages/_markdown.blade.php_前缀很重要,因为它防止直接访问)并将配置键pages.views.markdown更改为pages._markdown

如果您想比配置文件允许的更多自定义路由逻辑,只需自己注册路由即可(而不是调用Page::routes()

Route::get('/{page}', ArchTech\Pages\PageController::class);

生态系统支持

该软件包完美支持生态系统中其他工具,例如 Laravel NovaLean Admin

例如,在 Laravel Nova 中,您可以创建一个用于软件包提供的 Page 模型(ArchTech\Pages\Page)的资源,并使用以下字段模式

public function fields(Request $request)
{
    return [
        Text::make('slug'),
        Text::make('title'),
        Markdown::make('content'),
    ];
}

Git 集成 & Orbit

此软件包在底层使用 Orbit — 将 Markdown 文件作为 Eloquent 模型管理。如果您想自定义一些与该逻辑相关的功能,请查阅 Orbit 文档。

该软件包还使用了我们的另一个软件包,Laravel SEO,为 Markdown 页面提供元标签支持。我们建议您自己使用此软件包,因为它将使处理元标签变得和添加以下行到布局的 <head> 部分一样简单

<x-seo::meta />

受密码保护的路由

该软件包还允许您使用密码保护某些路由。要给页面添加密码,只需在 YAML 前置文件中指定 password

password: 'foo'

现在,如果用户想要访问该页面,他必须 必须 在 URL 中包含 ?password=foo,否则将显示 403 错误。

- /about
+ /about?password=foo