timkelty/craft-site-sync

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

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

安装: 54

依赖者: 0

建议者: 0

安全: 0

星标: 40

关注者: 2

分支: 8

类型:craft-plugin

1.2.0 2020-04-23 21:26 UTC

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

使用

您希望执行同步的每个字段布局必须包含一个站点同步设置字段。

Site-Sync Settings Field

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

Site-Sync Settings Field

当您保存包含站点同步设置字段的条目时

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

嵌套(矩阵、Neo、SuperTable等)

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

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

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

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

这也意味着(如果你想疯狂一点),你可以在一个MatrixBlock上包含一个Site-Sync Settings字段,以限制同步范围仅限于该块。或者,你可以在Entry布局中包含一个,并在MatrixBlock布局中覆盖它。虽然这种做法是受支持的,但它可能会使用户感到非常困惑,并且可能不适合大多数用途。

路线图

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