错字3 - 不要复制内联子记录

时间:2014-01-28 12:16:02

标签: typo3

我想要复制一个自定义记录“文章”,该文章包含多个相关的内联子记录(例如评论)。我的问题是所有内联子记录也被复制。在我的示例中,当我复制文章记录时,所有评论记录也被复制。我怎么能避免这个?

我发现我可以通过以下tca设置移动记录时避免这种行为:

'behaviour' => array(
'disableMovingChildrenWithParent' => 1
),

是否存在类似的复制或某种解决方法?

thanx!

3 个答案:

答案 0 :(得分:1)

感谢Panade。我自己找到了解决方案。

我在sysext / core / Classes / DataHandling / DataHandler.php的公共函数process_cmdmap()中使用了processCmdmap钩子

我基本上覆盖$ this-> copyRecord($ table,$ id,$ value,1)并添加第五个参数$ overrideValues,其中包含一个数组,其中包含我要覆盖的字段,在我的情况下是'comment'集为'0'。只有当前表格是我的“文章”并且命令是“复制”时才这样做。

希望这会有所帮助!

答案 1 :(得分:0)

One Way会在数据库级别上编辑它。您只需将记录复制到新页面,然后在数据库中删除其子项的所有引用链接。这可以扩展为扩展形式的通用解决方案。也许在TYPO3 Ter存储库中已经存在这样的扩展。

另一个解决方案(未经测试)可能是Page Base上的Export功能。在那里,您可以定义要复制的元素。这取决于评论和文章记录的存储方式,但也许这也是一种方法。

如果子记录列为数据元素,您还可以转到列表视图,只需删除子元素。这也应该删除参考。这仅适用于子元素(注释)的存储PID是您放置主元素的页面。

答案 2 :(得分:0)

通过将TCA控制区中的'setToDefaultOnCopy'设置为内联记录的字段,我实现了同样的目的。这样,该字段被设置为默认值(在大多数情况下为null),并且不会与父记录一起复制。

我还使用processCmdmap挂钩评估了解决方案,这会在父记录上产生一个空的内联记录字段,但不会阻止内联记录的复制。此外,在我的情况下,复制的子记录仍然具有对父记录集的引用。 所以底线是processCmdmap对我不起作用,但是TCA ctrl'setToDefaultOnCopy'就可以了。