Tailor 是一项功能,用于定义供您的网站使用的基于文件的内容结构,例如公司博客或团队页面。Tailor 自动生成用于管理记录的后端用户界面,并提供 CMS 组件,用于在前端显示和链接记录。
使用 Tailor 时,你可以跳过传统的插件开发工作流,直接定义内容。字段被简单地定义为蓝图模板,内容存储在特殊的数据库表中。蓝图模板还可以指定导航和其他修饰符。
蓝图是 YAML 文件,默认位于 app/blueprints 目录中,此外还位于 themes/.../blueprints 目录中,用于 CMS 主题。蓝图的放置位置取决于上下文:应用蓝图 是全局可用的,而 主题蓝图 仅在该主题被选中时可用。
下面您可以看到一个示例蓝图目录结构。每个蓝图都可以位于任何目录中,并且可以使用任何文件名。蓝图可以组织在任意嵌套深度的子目录中。
├── app
| └── blueprints ← 蓝图从这里开始
| ├── blog
| │ └── blog.yaml
| │ └── author.yaml
| ├── about
| │ └── about.yaml
| ├── wiki
| │ └── article.yaml
接下来是 demo 主题内部的蓝图结构的一个示例。就像在 app 目录中一样,蓝图可以存在于任何目录、任何文件名和任何嵌套深度中。这些蓝图的后台面板导航只有在主题被选中时才会出现,通常由多站点设置控制。
├── themes
| └── demo
| ├── blueprints ← 蓝图从这里开始
| │ └── settings.yaml
| │ └── color-scheme.yaml
蓝图类型属性决定了蓝图应如何实现。 有几种可用的类型并且大多数蓝图将指定表单字段定义。
| Type | Description |
|---|---|
| Entry | the standard content structure that supports drafts. |
| Global | a single record in the database and is often used for settings and configuration. |
| Mixin | defines reusable field definitions that can be imported and mixed in with other field definitions. |
每种蓝图类型都在蓝图文章中进行了更详细的描述。
蓝图是100%可移植的。它们使用内部标识符,可以位于任何目录,使用任何文件名。
蓝图使用 YAML 语法定义,并且总是包含三个标识符,一个唯一的 UUID,一个用户友好的句柄和蓝图类型。蓝图的文件名和文件夹用于组织蓝图,并且不作为标识符使用。所有其他属性都在蓝图的相关文档文章中定义。
uuid: edcd102e-0525-4e4d-b07e-633ae6c18db6
handle: Blog\Post
type: entry
name: Post
fields:
# [...]蓝图句柄是一种引用蓝图对象的人类可读方法. 参照上述蓝图,我们可以使用该句柄引用这些条目.
句柄遵循与 PHP 命名空间类似的命名约定,并可使用反斜杠
\分隔符进行组织。
[section blog]
handle = "Blog\Post"蓝图的 uuid 是一个唯一标识符 用于蓝图引用其他蓝图时。例如, 当字段引用混入时。首次创建蓝图时, 您可以选择不包含 UUID 并且会在首次迁移时为您自动创建一个。
_blog_content:
source: edcd102e-0525-4e4d-b07e-633ae6c18db6
type: mixin蓝图默认不使用多站点功能。您可以使用 multisite 属性来启用此功能。启用后,记录对每个配置的站点可以是唯一的。
handle: Blog\Post
type: entry
# ...
multisite: true当多站点启用时,蓝图中的所有字段都变得可翻译。为了使字段保持相同的值,请将 translatable 属性设置为 false。在此示例中,当保存记录时,名称字段将在保存时复制到每个站点。
# ...
multisite: true
fields:
name:
label: Full Name
type: text
translatable: false您还可以将值设置为 sync 以使记录在各个站点之间保持同步,这对于分类和标签很有帮助。使用 sync 时,每个记录将始终存在于每个站点上,尽管内容可以不同。
multisite: sync当使用 站点组 时,记录将传播到该组内的所有站点。这可以通过将 multisite 属性设置为 all 来更改,以便在所有站点中同步。
multisite: all设置为 区域设置 会将记录同步到所有共享相同区域设置的站点。
multisite: locale蓝图及其结构会在正常的数据库迁移过程中迁移到数据库中。当对蓝图文件进行手动更改时,您应该运行 tailor:migrate 命令以更新数据库表。
php artisan tailor:migrate调试模式关闭时,蓝图会被缓存。迁移命令也可用于清除蓝图缓存。
您可以删除由 Tailor 管理的所有内容 使用 tailor:refresh 命令。
php artisan tailor:refresh刷新单个蓝图时,请使用 --blueprint 选项并指定其句柄。
php artisan tailor:refresh --blueprint="Blog\Post"当为多站点使用 sync 选项时,您可以使用 tailor:propagate 命令追溯地传播记录。
php artisan tailor:propagate要传播单个蓝图 使用 --blueprint 选项并指定其句柄。
php artisan tailor:propagate --blueprint="Blog\Category"一般来说 Tailor 永远不会删除表列和删除内容。如果一个字段被移除,该列将被重命名而不是被删除。例如,一个名为content的旧字段可能会在数据库表中显示为x_content_fb418fac。旧蓝图的表也被保留,以防它们在将来被恢复。
您可以使用 tailor:prune 命令修剪未使用的数据库列。此命令还将删除不再具有关联蓝图的表。
php artisan tailor:prune你只能使用 --fields 修饰符修剪字段。要只修剪表,请使用 --tables 修饰符。
php artisan tailor:prune --fields
php artisan tailor:prune --tables要修剪单个蓝图 请使用 --blueprint 选项并指定其句柄。
php artisan tailor:prune --blueprint="Blog\Post"