timkelty / craftcms-site-sync
在元素保存时同步内容到其他站点。
Requires
- php: >=7.1.0
- craftcms/cms: ^3.0.28
This package is auto-updated.
Last update: 2024-09-24 06:42:05 UTC
README
在多站点 Craft CMS 安装中同步站点间的内容。
动机
在 多站点 配置中,可翻译字段内容仅在初始保存时传播到其他站点。如果您想编辑可翻译内容并将这些更改传播到您的其他站点,您必须在每个站点上重新创建这些更改。🤢
Site-Sync 允许您在保存元素时按字段传播和同步更改。除了任何字段内容(包括 Matrix 等)之外,它还可以同步 title
和 slug
内容,因为这些内容在 Craft 中总是可翻译的。
与 Craft 2 版本 和 其他类似插件 不同,此插件有几个关键原因被实现为一个字段
- 当在 HUD 中保存元素时它有效。
- 可以创建具有不同默认设置的多个字段。
安装
$ composer require timkelty/craftcms-site-sync
用法
您希望在其中执行同步的每个字段布局都必须包含一个 Site-Sync 设置 字段。
在字段设置中,您可以配置字段的默认状态。请注意,与大多数字段不同,对此字段的更改不会在元素保存之间持久保存。它们将始终恢复到字段设置中配置的状态。
当您保存包含 Site-Sync 设置 字段的条目时
- 如果当您保存元素时 启用 切换处于开启状态,则保存前匹配的内容将被传播到其他站点。
- 只有来自所选 源 的内容将被同步。
- 内容仅传播到用户有权保存元素的站点。
嵌套(Matrix、Neo、SuperTable 等)
如果您想同步嵌套内容,具有实际内容的子字段应该是可翻译的,而不是父字段(Matrix 等)。不要勾选“按站点管理块”。此设置将每个 MatrixBlock
作为独特元素处理,因此不会同步。
如果您仍然希望将 Matrix 字段作为可翻译的,当使用“覆盖”选项时,有显式支持 Matrix 和 SuperTable。如果这些字段是可翻译的,它们将仅在“覆盖”启用时同步到其他站点。
当保存任何元素(例如 MatrixBlock
、Entry
)时,插件将遍历其层次结构(通过 ElementInterface::getParent
)直到找到一个 Site-Sync 设置 字段。
例如,这意味着您可以在您的 Entry
布局中有一个单独的 Site-Sync 设置 字段,但嵌套的 MatrixBlock
仍然可以找到它并使用这些设置进行同步。
这也意味着(如果您想变得疯狂),您可以在 MatrixBlock
上包含一个 Site-Sync 设置 字段以限制同步范围仅限于该块。或者,您可以在 Entry
布局中包含一个,并在 MatrixBlock 布局中使用另一个覆盖它。虽然此方法得到支持,但它对于用户来说可能会变得极其复杂,并且可能不太适用于大多数用途。
路线图
- 支持覆盖 + Neo
- 利用增量进行更好的比较
- 插件存储
- 验证字段布局,只允许一个此字段类型
- 值/标签可用性改进(《toggleLabelId》)
- 修复与CP Field Links的兼容性问题
- 如果有自定义,则更改“标题”名称。
- 实现getElementValidationRules以向元素添加错误
- 确保只有在有挂起更改时才保存元素(性能优化)