文件夹

文件夹功能允许你在多个集合中对文档进行分组,是组织内容的绝佳方式。文件夹基于关系字段构建,当你在集合中启用文件夹功能时,Payload 会添加一个隐藏的关系字段 folders,用于关联到某个文件夹或无文件夹状态。文件夹还包含 folder 字段,允许文件夹嵌套在其他文件夹中。

文件夹的配置需要在两个地方完成:集合配置和 Payload 配置。集合配置用于启用文件夹功能,而 Payload 配置用于设置全局文件夹参数。

注意: 文件夹功能目前处于测试阶段,在稳定版本发布前,可能会在次要版本更新中进行调整。

文件夹配置

在 Payload 配置中,你可以在 folders 属性下配置以下设置:

// 类型定义

type RootFoldersConfiguration = {
  /**
   * 文件夹集合初始化时运行的函数数组
   * 允许插件修改集合配置
   */
  collectionOverrides?: (({
    collection,
  }: {
    collection: CollectionConfig
  }) => CollectionConfig | Promise<CollectionConfig>)[]
  /**
   * 是否查看与文件夹相关的隐藏字段和集合
   *
   * @default false
   */
  debug?: boolean
  /**
   * 文件夹字段名称
   *
   * @default "folder"
   */
  fieldName?: string
  /**
   * 文件夹集合的 slug
   *
   * @default "payload-folders"
   */
  slug?: string
}
// 使用示例

import { buildConfig } from 'payload'

const config = buildConfig({
  // ...
  folders: {
    // highlight-start
    debug: true, // 可选
    collectionOverrides: [
      async ({ collection }) => {
        return collection
      },
    ], // 可选
    fieldName: 'folder', // 可选
    slug: 'payload-folders', // 可选
    // highlight-end
  },
})

集合配置

要在集合上启用文件夹功能,你需要在集合配置中将 admin.folders 属性设置为 true。这会在集合中添加一个隐藏的关系字段,用于关联到某个文件夹(或不关联任何文件夹)。

// 类型定义

type CollectionFoldersConfiguration = boolean
// 使用示例

import { buildConfig } from 'payload'

const config = buildConfig({
  collections: [
    {
      slug: 'pages',
      // highlight-start
      folders: true, // 默认为 false
      // highlight-end
    },
  ],
})