获取SDL Tridion中已发布元素的URL

获取SDL Tridion中已发布元素的URL,tridion,Tridion,有没有办法在SDL Tridion接口中找到已发布对象的绝对URL 例如,当我发布页面时,如何找到访问页面的url?这不是很简单,主要是因为Tridion允许您将单个页面发布到多个目标(=网站)。该页面实际上可能有许多URL 但是,最好的选择是打开页面并单击“信息”选项卡。您将在那里找到文件路径,它可能如下所示:\about\press\2011。将反斜杠替换为斜杠,并添加页面的文件名和文件扩展名(可在“常规”选项卡上找到)。将整个内容放在您网站的根URL后面(例如“) Tridion在Publ

有没有办法在SDL Tridion接口中找到已发布对象的绝对URL


例如,当我发布页面时,如何找到访问页面的url?

这不是很简单,主要是因为Tridion允许您将单个页面发布到多个目标(=网站)。该页面实际上可能有许多URL


但是,最好的选择是打开页面并单击“信息”选项卡。您将在那里找到文件路径,它可能如下所示:\about\press\2011。将反斜杠替换为斜杠,并添加页面的文件名和文件扩展名(可在“常规”选项卡上找到)。将整个内容放在您网站的根URL后面(例如“)

Tridion在PublishLocationUrl属性中公开URL的路径。您可以通过TOM.NET API或通过在Internet Explorer的地址栏中输入TCMURI(例如tcm:4-264-64)来查看项目的原始XML来访问它


但在这两种情况下,它们都只返回URL的路径部分。正如前面提到的Quirijn一样,您必须在它前面加上正确的基本URL。

虽然没有完成,也没有很好的文档记录,但它包括两个按钮“在登台时打开”和“在现场打开”.

如果要在c#tbb库中查找代码,可以对页面和结构组使用PublishLocationUrl属性:

StructureGroup.PublishLocationUrl或 Page.PublishLocationUrl

如果项目已发布或未发布,这将返回URL。由于Page和StructureGroup扩展了ReposityObject类,我通常会执行一项检查,查看ReposityObject是否已发布到页面要发布到的目标,例如:

if (PublishEngine.IsPublished(myReposityObject, myEngine.PublishingContext.PublicationTarget))
{
 // page or sg is published!
}
注意:其中myEngine是Engine对象的实例

如果您在核心服务中执行此操作,则有点不同,您需要创建一个PublishLocationInfo对象,该对象是从页面或StructureGroup对象属性LocationInfo强制转换而来的,如下所示:

PublishLocationInfo pubInfo = (PublishLocationInfo)page.LocationInfo;
return pubInfo.PublishLocationUrl;

在过去,我曾求助于为发布目标扩展协议模式。在那里添加了baseURL属性后,我可以从事件系统代码访问此属性(想法是将链接发送到工作流审批人)。 现在,您可以使用应用程序数据来做同样的事情