我正在使用UMBRACO 6.0.2,我看到一个问题,当我取消发布一个节点,在其他地方使用,UMBRACO不删除参考节点,导致代码崩溃。
我宁愿不实现逻辑来处理空节点,但宁愿实际的CMS更优雅地处理它。
有人知道这是否可能吗?
据我所知,Umbraco不会将节点之间的引用保存在单独的表中,因此没有标准选项来查看哪些节点引用了另一个节点。
但是,有一种方法可以通过在数据库表上使用查询来实现这一点。Umbraco将cmsPropertyData
表中documenttype字段的值保存在dataNtext
字段中,将nodeID保存在contentNodeId
字段中
您可以连接到Document.AfterUnPublish()
或Document.BeforeUnPublish()
事件,并在cmsPropertyData
表上运行查询,以检查是否有dataNtext
字段包含您刚刚未发布的nodeId。如果是这样,您还需要从contentNodeId
字段中取消发布带有nodeID的Document。
这个解决方案不是一个干净的,但它可以工作。棘手的部分是确定节点是否尚未在事件中被处理/未发布,否则可能会创建无限循环;)