Plone 使用灵巧性将都柏林核心数据只读访问委托给子对象

Plone 使用灵巧性将都柏林核心数据只读访问委托给子对象,plone,dexterity,Plone,Dexterity,Background:容器类型实际上不支持工作复制行为,因为它会导致复制该文件夹的所有子文件夹时出现问题。我们正在通过为容器类型使用子数据类型来解决这个问题:几乎所有关于容器的数据都存储在一个数据对象中,该数据对象是该容器的子对象及其默认视图。我们从列表和搜索中排除数据对象 问题:这导致了不一致性,目前我们必须将都柏林核心行为指定给容器类型,而不是数据类型,因为所有核心Plone代码都需要描述、生效日期等。这对于我们的Plone编辑器来说有点混乱,因为它们有两个地方可以编辑关于容器的数据。此数据

Background:容器类型实际上不支持工作复制行为,因为它会导致复制该文件夹的所有子文件夹时出现问题。我们正在通过为容器类型使用子数据类型来解决这个问题:几乎所有关于容器的数据都存储在一个数据对象中,该数据对象是该容器的子对象及其默认视图。我们从列表和搜索中排除数据对象

问题:这导致了不一致性,目前我们必须将都柏林核心行为指定给容器类型,而不是数据类型,因为所有核心Plone代码都需要描述、生效日期等。这对于我们的Plone编辑器来说有点混乱,因为它们有两个地方可以编辑关于容器的数据。此数据也只能在实时版本上编辑,而不能在签出的工作副本上编辑

我希望能够做到的是:

  • 将对都柏林核心数据的任何请求从容器委托给子数据对象(不知道从何处开始)
  • 在保存容器时,它将使用子数据dublin core data作为其在目录中的元数据(如果第一部分工作正常,这应该可以工作)
  • 在保存子数据时,它将重新索引其父对象以更新其元数据(我计划注册一个事件以实现此目的)

有人能给我一些如何实现第一部分的建议吗?

我想你有两个选择:

  • 创建自己的元数据行为,在数据对象上查找元数据

  • 修改数据对象时,只需在事件处理程序中更新父对象的元数据即可


  • 考虑到无论如何都需要事件处理程序来强制父级重新索引,我可能会选择简单的元数据复制方法。

    我花了好几个小时尝试方法1。但今天我迷路了,放弃了。没有想到方法2。但看起来很有希望。理想情况下,我会在编辑UI中隐藏父级的元数据字段。这是一个非常有趣的问题!如果你能找到一个有效的解决方案,我希望你能继续跟进。