【问题标题】:Mass delete publications in Tridion 2009在 Tridion 2009 中批量删除出版物
【发布时间】:2012-09-13 03:52:47
【问题描述】:

有没有办法批量删除出版物,而不是从内容管理器中删除它们?我需要处理掉大约 75 家现在过剩的酒吧。

【问题讨论】:

  • 全选出版物,右键,删除?它显然会在删除它们之前完成所有检查,但它完成了工作......
  • 出于兴趣,您要删除 75 个,您还剩下多少个?
  • 我遇到了需要删除 90% 以上的出版物的情况。我选择了 Content Port(在很多部分,但相对论无痛)我想要一个新的 BluePrint。这也让我能够创建最佳蓝图。
  • 75 消失,210 离开。由于性能限制,这从未做过。例如,在数据库上执行清除工具需要在我拥有的盒子上连续执行 2 周。最后决定保留 BluePrint 结构以节省时间。

标签: tridion


【解决方案1】:

虽然可能可以直接操作数据库,但删除出版物的唯一支持方法是通过内容管理器或 API(尽管快速查看文档我认为只能通过旧的 TOM API,而不是 TOM.Net)。

正如 Nuno 所建议的那样,对于 75 种出版物,通过内容管理器完成这项工作可能比编写/测试/调试使用 API 完成相同工作的工具要容易得多。

请记住,您只能删除出版物,只要:

  • 出版物中未发布任何内容。
  • 该出版物在蓝图中没有任何子出版物。
  • 您是系统管理员。

【讨论】:

  • 谢谢大卫。不幸的是,你提到的三个标准中有两个在我的场景中失败了(即前两个)。最后,由于它是一台开发机器,我决定手动操作数据库来设置发布/项目状态。我将手动计算 BP,然后按照 Nuno 的建议进行操作。 :)
【解决方案2】:

我想说最简单的方法是使用核心服务 API,只需调用 client.Delete("tcm:0-xyz-1"); 创建您的核心服务客户端,如 tridion-practice 中所述。

但是,您很可能会收到 Item is in use. 错误返回,您最好可以在 UI 中手动解决该错误。也可以使用 client.UnPublish() 方法取消发布整个发布作为调用 Delete 之前的准备工作(有关所需参数的详细信息,请参阅 API 文档)。

【讨论】:

  • 核心服务仅从 SDL Tridion 2011 开始提供
【解决方案3】:

很大程度上取决于您需要删除哪些出版物。从脚本中删除出版物很容易。 (我最喜欢的方法是使用 Windows Powershell),但您需要先删除蓝图子级,然后再尝试删除它们的父级。如果出版物具有蓝图子项,则不能将其删除。

所以先弄清楚蓝图关系,然后再进行删除。尽管如此,对于 75 份出版物,您可能会在测试脚本之前手工完成。当然,如果您需要通过您的 DTAP 街道准确地传输相同的更改,则可以使用脚本。

【讨论】:

    【解决方案4】:

    这是一个耗时的过程,我去年删除了 50 多个,这些出版物中有数千个已发布项目。

    仅供参考,有一种更快的方法可以使用电动工具将所有项目设置为未发布,但同样会在代理数据库中留下许多条目。

    因此建议对此进行计划,并从内容管理器、tom API 或核心服务中进行适当的取消发布和删除。

    【讨论】:

    • 干杯,电动工具完全坏了(还不知道为什么)- 求助于老式的蛮力 DB 编辑!
    • 如果您直接访问 URL 而不是访问 powertools 主页,则 Powertools 会选择性地工作。上次当我检查这个仍然有效。你直接去/Powertools/UnpublishAllCPsFromPublication.asp 就可以了。页面取消发布也是如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2012-10-13
    • 2012-08-17
    • 2012-05-18
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多