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