取消发布使用过的UMBRACO节点会导致站点崩溃

时间:2013-04-12 12:22:37

标签: umbraco

我正在使用UMBRACO 6.0.2,而且我发现当我取消发布其他地方使用的节点时,UMBRACO不会删除参考节点并导致代码崩溃。

我宁愿不实现逻辑来处理空节点,而是希望实际的CMS更优雅地处理它。

任何人都知道这是否可能?

1 个答案:

答案 0 :(得分:1)

据我所知,Umbraco不会在单独的表中保存节点之间的引用,因此没有标准选项来查看哪些节点引用了另一个节点。

但是,有一种方法可以通过在数据库表上使用查询来实现此目的。 Umbraco将文档类型字段的值保留在字段cmsPropertyData的{​​{1}}表中,nodeID保存在dataNtext字段

您可以挂钩contentNodeIdDocument.AfterUnPublish()事件并在Document.BeforeUnPublish()表上运行查询以检查是否有cmsPropertyData个字段包含您刚刚拥有的nodeId未公布。如果是这样,您还需要使用dataNtext字段中的nodeID取消发布文档。

此解决方案不是一个干净的解决方案,但它可以工作。棘手的部分是确定您的事件中是否尚未处理/取消发布节点,否则您可能会创建无限循环;)