timkelty/craft-localesync

此包已被弃用且不再维护。作者建议使用timkelty/craft-site-sync包。

在元素保存时同步内容到其他网站。

安装次数9,005

依赖项: 0

建议者: 0

安全: 0

星标: 40

关注者: 2

分支: 8

类型:craft-plugin

1.2.0 2020-04-23 21:26 UTC

README

在多站Craft CMS安装中同步网站之间的内容。

动机

多站配置中,可翻译字段内容仅在首次保存时传播到其他站点。如果您想编辑可翻译内容并将这些更改传播到您的其他站点,您必须在每个站点上重新创建这些更改。🤢

Site-Sync允许您在保存元素时基于每个字段传播和同步更改。除了任何字段内容(包括Matrix等)外,它还可以同步titleslug内容,因为在Craft中这些内容总是可翻译的。

Craft 2版本和其他类似插件相比,此插件作为几个关键原因实现为一个字段

  • 它可以在HUD中保存元素时工作。
  • 可以创建多个字段,并使用不同的默认设置。

安装

$ composer require timkelty/craftcms-site-sync

使用

您希望执行同步的每个字段布局都必须包含一个Site-Sync设置字段。

Site-Sync Settings Field

在字段设置中,您可以配置字段的默认状态。注意,与大多数字段不同,对此字段的更改不会在元素保存之间持久化。它们将始终恢复到字段设置中配置的状态。

Site-Sync Settings Field

当您保存包含Site-Sync设置字段的条目时

  • 如果保存元素时启用了启用切换,则保存之前匹配的内容将传播到其他站点。
  • 只有来自所选来源的内容才会同步。
  • 内容只会传播到用户有权保存元素的站点。

嵌套(Matrix、Neo、SuperTable等)

如果您想同步嵌套内容,实际内容的子字段应该是可翻译的,而不是父字段(Matrix等)。不要勾选“按站点管理块”。此设置将每个MatrixBlock视为一个唯一的元素,因此不会同步。

如果您仍然希望将Matrix字段设为可翻译,当使用“覆盖”选项时,对Matrix和SuperTable有显式支持。如果这些字段是可翻译的,它们将仅在“覆盖”启用时同步到其他站点。

当任何元素(例如MatrixBlockEntry)被保存时,插件会遍历其层次结构(通过ElementInterface::getParent)直到找到“网站同步设置”字段。

例如,这意味着您可以在Entry布局中有一个单独的“网站同步设置”字段,但嵌套的MatrixBlock仍然可以找到它并使用这些设置进行同步。

这也意味着(如果您想变得疯狂),您可以在MatrixBlock上包含“网站同步设置”字段以限制同步范围仅限于该块。或者,您可以在Entry布局中包含一个,并在MatrixBlock布局中用另一个覆盖它。虽然此方法受到支持,但它可能会对用户造成指数级的困惑,并且可能不适用于大多数用途。

路线图

  • 支持覆盖 + Neo
  • 利用差异进行更好的比较
  • 插件存储库
  • 验证字段布局,只允许一个此字段类型
  • 值/标签可用性改进(toggleLabelId
  • 修复与CP Field Links的兼容性问题
  • 如果有自定义,则更改“标题”名称。
  • 实现getElementValidationRules以向元素添加错误
  • 确保只有在元素有挂起更改时才保存元素(性能)