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