有没有办法批量删除出版物而不是从内容管理器中删除它们?我需要清理掉大约 75 家现在过剩的酒吧。
4 回答
虽然可以直接操作数据库,但删除出版物的唯一受支持的方法是通过内容管理器或 API(尽管快速查看文档,我认为只能通过旧的 TOM API,而不是 TOM.Net)。
正如 Nuno 所建议的那样,对于 75 种出版物,通过内容管理器完成这项工作可能比编写/测试/调试使用 API 完成相同工作的工具要容易得多。
请记住,您只能删除出版物,只要:
- 出版物中没有任何内容被发布。
- 出版物在蓝图中没有任何子出版物。
- 您是系统管理员。
最简单的方法是使用我想说的核心服务 API,例如,按照tridion-practiceclient.Delete("tcm:0-xyz-1");
中的描述调用创建核心服务客户端。
但是,您很可能会收到一个Item is in use.
错误,您最好可以在 UI 中手动解决该错误。使用该方法也可以在调用 Delete 之前取消发布整个发布作为准备client.UnPublish()
(有关所需参数的详细信息,请参阅 API 文档)。
很大程度上取决于您需要摆脱哪些出版物。从脚本中删除出版物很容易。(我最喜欢的方法是使用 Windows Powershell),但您需要先删除蓝图子级,然后再尝试删除它们的父级。如果出版物具有蓝图子项,则不能将其删除。
所以先搞清楚蓝图关系,再做删除。尽管如此,对于 75 份出版物,您可能会在测试脚本之前手工完成。当然,如果您需要通过您的 DTAP 街道准确地传输相同的更改,则可以使用脚本。
这是一个耗时的过程,我去年删除了 50 多个,其中数千个已发布项目在这些出版物中。
仅供参考,有一种更快的方法可以使用电动工具将所有项目设置为未发布,但同样会在代理数据库中留下许多条目。
因此,建议对此进行计划并从内容管理器、tom API 或核心服务中进行适当的取消发布和删除。