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