@delmaredigital/活页-树
一个将内置文件夹功能扩展至自动生成分级 URL satters 的有效载荷 CMS 插件 。 文件夹定义了 URL 结构,页面选择一个文件夹,而 satters 是自动生成的.
联合国 插件.delmaredigital.com/docs/页面树 • 妇女 概览
安装
pnpm add @delmaredigital/payload-page-tree
快速启动
1. 添加插件
// src/payload.config.ts
import { buildConfig } from 'payload'
import { pageTreePlugin } from '@delmaredigital/payload-page-tree'
import { Pages } from './collections/Pages'
export default buildConfig({
collections: [Pages],
plugins: [
pageTreePlugin(), // Auto-detects 'pages' and 'posts' if they exist
],
})
2. 定义您的收藏
您的收藏 必须 有个 slug 字段。 插件使它从文件夹路径+页面段中只读和自动生成值.
// src/collections/Pages/index.ts
import type { CollectionConfig } from 'payload'
export const Pages: CollectionConfig = {
slug: 'pages',
fields: [
{ name: 'title', type: 'text', required: true },
{
name: 'slug',
type: 'text',
required: true,
unique: true,
index: true,
},
],
}
重要内容: 不使用有效载荷
slugField()帮手 使用一个纯文本字段——插件通过自己的钩子来管理 sults.
3. 前端路线
// app/[...slug]/page.tsx
export default async function Page({ params }: { params: { slug: string[] } }) {
const fullSlug = params.slug.join('/')
const { docs } = await payload.find({
collection: 'pages',
where: { slug: { equals: fullSlug } },
limit: 1,
})
// ...
}
就这样! 该插件添加 folder, (中文(简体) ), pageSegment, (中文(简体) ), sortOrder,以及 slugHistory 字段,然后在 /admin/page-tree。 。 。 .
访问控制
树观在下面叫十四个终点 /api/page-tree/*。两层决定谁可以使用它们:
- 端口门 - 那个
access选项在每一个终点之前运行。 默认情况下,它需要一个经认证的有效载荷用户(401没有用户,403他们否认真主. - 收集访问规则 - 阅读和撰写用户运行的文档
overrideAccess: false作为请求用户,所以access执行关于页面和文件夹收藏的规则。 URL维护(slug exceptry,相撞检查,级联目录)读取可信赖的访问权限,但只有用户能读取的文件夹下方. 见 出入控制 关于细节.
pageTreePlugin({
// Only admins may use the tree endpoints
access: ({ req }) => req.user?.role === 'admin',
})
从0.3.16或更早升级: 这些版本注册了没有认证的终点,并绕过收藏访问规则。 升级和审查
access在您的页面和文件夹收藏上的规则 – 它们现在管理树 。 见 变化。 。 。 .
许可证
麻省理工学院