在使用 TOM.NET API 的 TBB 中,我想获取已发布页面的列表 - 基本上我正在构建站点地图。我正在尝试确定 Tridion.ContentManager.CommunicationManagement.Page 是否已发布。
似乎没有一个IsPublished
财产或IsPublishedTo
method.
我可以添加过滤条件吗?例如。
pageFilter.Conditions["Published"] = "true";
回应评论:
我正在使用 TOM.NET API,我想获取已发布页面的列表 - 基本上我正在构建站点地图。
如果页面发布到 BluePrint 层次结构中任何位置的给定目标,则 PublicationEngine.IsPublished 方法似乎返回“true”。这似乎不是预期的行为。
在这种情况下,您在 BluePrint 中有多个出版物,您可以对您所在的页面使用 PublishEngine.GetPublishInfo() 方法,并检查您要发布的出版物是否存在于从该方法返回的出版物中:
IList<RepositoryLocalObject> rlos = structuregroup.GetItems(pageFilter);
List<Page> pages = new List<Page>(rlos.Count);
foreach (RepositoryLocalObject o in rlos)
{
Page p = (Page) o;
bool isPublished = false;
ICollection<PublishInfo> publishInfo = PublishEngine.GetPublishInfo(p);
foreach (PublishInfo info in publishInfo)
{
if (info.Publication.Id.ItemId == p.Id.PublicationId)
{
isPublished = true;
}
}
if(p != null && isPublished)
{
pages.Add(p);
}
}
您必须意识到此方法中存在一个错误,它将始终返回您正在发布的当前出版物。此问题已在修补程序 CM_2009.1.74835 中修复。您需要应用它,否则上面的代码将无法正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)