timkelty / craft-localesync
Requires
- php: >=7.1.0
- craftcms/cms: ^3.0.28
This package is not auto-updated.
Last update: 2022-02-01 12:58:22 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
)直到找到“网站同步设置”字段。
例如,这意味着您可以在Entry
布局中有一个单独的“网站同步设置”字段,但嵌套的MatrixBlock
仍然可以找到它并使用这些设置进行同步。
这也意味着(如果您想变得疯狂),您可以在MatrixBlock
上包含“网站同步设置”字段以限制同步范围仅限于该块。或者,您可以在Entry
布局中包含一个,并在MatrixBlock
布局中用另一个覆盖它。虽然此方法受到支持,但它可能会对用户造成指数级的困惑,并且可能不适用于大多数用途。
路线图
- 支持覆盖 + Neo
- 利用差异进行更好的比较
- 插件存储库
- 验证字段布局,只允许一个此字段类型
- 值/标签可用性改进(
toggleLabelId
) - 修复与CP Field Links的兼容性问题
- 如果有自定义,则更改“标题”名称。
- 实现getElementValidationRules以向元素添加错误
- 确保只有在元素有挂起更改时才保存元素(性能)