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



我正在使用UMBRACO 6.0.2,我看到一个问题,当我取消发布一个节点,在其他地方使用,UMBRACO不删除参考节点,导致代码崩溃。

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

有人知道这是否可能吗?

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

但是,有一种方法可以通过在数据库表上使用查询来实现这一点。Umbraco将cmsPropertyData表中documenttype字段的值保存在dataNtext字段中,将nodeID保存在contentNodeId字段中

您可以连接到Document.AfterUnPublish()Document.BeforeUnPublish()事件,并在cmsPropertyData表上运行查询,以检查是否有dataNtext字段包含您刚刚未发布的nodeId。如果是这样,您还需要从contentNodeId字段中取消发布带有nodeID的Document。

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

最新更新