SilverStripe 3.6.3取消发布意外结果

时间:2017-12-12 23:42:21

标签: silverstripe

我有一个关于在3.6.3中取消发布页面的问题。如果我取消发布一个页面,它的所有后代也会取消发布,所以当我重新发布父页面时,我必须重新发布它们。我不记得过去发生过其他版本的情况。如果它是一个功能,这不是很好,因为在我取消发布父页面之前我无法再判断某些子页面是否未发布所以有可能通过批量发布它们所有这些,我可能会发布不应该发布的页面出版。这是一个错误还是一个功能?

1 个答案:

答案 0 :(得分:0)

我可以确认这是在以前的版本中发生的(我检查过早于3.3.2)。值得一看的是,回顾一下源代码,看来SilverStripe 4.x 及更高版本(例如v4.6)中也存在此“功能”。

这似乎是由于enforce_strict_hierarchy下的SiteTree设置引起的。显然,这默认为true,这意味着无论何时删除某个页面(无论“阶段”如何,例如实时或草稿),都会导致所有子页面也被删除。 / p>

从技术上讲,当您取消发布页面时,它会从“活动”阶段将其删除。因为这是一个删除,所以它最终也会级联到所有子页面。结果,最终结果是,当您取消发布页面时,所有子页面也似乎都尚未发布。这是一个奇怪的设置,在384页突然未发布后,我才意外地发现它。特别是因为这还意味着您必须在取消发布(删除)当前页面下的所有内容这一意外功能之间进行选择,否则,数据库中就会有很多孤儿。

无论如何,要解决此问题,请将其添加到您网站的_config.yml文件中:

SiteTree:
  enforce_strict_hierarchy: false