Tailor 是一项功能,用于定义您的网站使用的文件型内容结构,例如公司博客或团队页面。Tailor 会自动生成一个后端用户界面用于管理记录并提供 CMS 组件用于在前端显示和链接记录。
使用 Tailor 时可以跳过传统的插件开发工作流并直接定义内容。字段被简单地定义为蓝图模板并且内容存储在特殊的数据库表中。蓝图模板还可以指定导航及其他修饰符。
蓝图是 YAML 文件,默认位于 app/blueprints 目录,此外也位于用于 CMS 主题 的 themes/.../blueprints 目录。蓝图的放置位置取决于上下文:应用蓝图 全局可用,而 主题蓝图 仅在该主题被选中时可用。
下面你可以看到一个示例蓝图目录结构。每个蓝图可以位于任何目录中,并且可以使用任何文件名。蓝图可以组织在任意嵌套深度的子目录中。
├── app
| └── blueprints ← 蓝图从这里开始
| ├── blog
| │ └── blog.yaml
| │ └── author.yaml
| ├── about
| │ └── about.yaml
| ├── wiki
| │ └── article.yaml
接下来是一个蓝图结构示例,位于demo主题中。就像在 app 目录中一样,蓝图可以存在于任何目录中,具有任何文件名,具有任何嵌套深度。这些蓝图的后台面板导航将仅在主题被选中时显示,通常由多站点设置控制。
├── themes
| └── demo
| ├── blueprints ← Blueprints Start Here
| │ └── settings.yaml
| │ └── color-scheme.yaml
蓝图的 type 属性决定了蓝图应如何实现。有多种类型可用,大多数蓝图会指定 表单字段定义。
| 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。在此示例中,保存记录时,**name** 字段将在保存时被复制到每个站点。
# ...
multisite: true
fields:
name:
label: Full Name
type: text
translatable: false您也可以将值设置为 sync 以使记录在各站点间保持同步,这对于分类和标签很有帮助。使用 sync 时,每条记录将始终存在于每个站点上,尽管内容可以不同。
multisite: sync当使用 站点组 时,记录将传播到该组内的所有站点。这可以通过将 multisite 属性设置为 全部 来更改,以在所有站点中同步。
multisite: all设置为区域设置将把记录同步到所有共享相同区域设置的站点。
multisite: locale蓝图及其结构在正常的数据库迁移过程中会迁移到数据库中. 当蓝图文件被手动更改时, 您应该运行 tailor:migrate 命令以更新数据库表.
php artisan tailor:migrate当调试模式关闭时,蓝图会被缓存。迁移命令也可以用于清除蓝图缓存。
您可以使用 tailor:refresh 命令删除由 Tailor 管理的所有内容。
php artisan tailor:refresh刷新单个蓝图需使用 --blueprint 选项并指定其句柄。
php artisan tailor:refresh --blueprint="Blog\Post"当使用多站点的 同步 选项时,您可以追溯性地传播记录使用 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"