有没有办法在 SDL Tridion 界面中找到已发布对象的绝对 URL?
例如,当我发布一个页面时,如何找到访问该页面的 url?
Tridion 2011 PowerTools虽然没有完成,也没有真正记录,但包含 2 个按钮,分别是“在暂存中打开”和“在实时中打开”。
如果您正在 c# tbb 库中查找代码,您可以将 PublishLocationUrl 属性用于页面和结构组:
StructureGroup.PublishLocationUrl 或 Page.PublishLocationUrl
如果项目已发布,这将返回 URL,因为 Page 和 StructureGroup 扩展了 ReposityObject 类,我通常会检查 ReposityObject 是否已发布到 Page 正在发布到的目标,例如:
if (PublishEngine.IsPublished(myReposityObject, myEngine.PublishingContext.PublicationTarget))
{
// page or sg is published!
}
注意:其中 myEngine 是 Engine 对象的一个实例。
如果您在核心服务中执行此操作,则有点不同,您需要做的是创建一个从 Page 或 StructureGroup 对象属性 LocationInfo 转换的 PublishLocationInfo 对象,如下所示:
PublishLocationInfo pubInfo = (PublishLocationInfo)page.LocationInfo;
return pubInfo.PublishLocationUrl;
这不是很简单,主要是因为 Tridion 允许您将单个页面发布到多个目标(= 网站)。该页面实际上可能有多个 URL。
但是,最好的选择是打开页面并单击“信息”选项卡。在那里您会找到文件路径,它可能如下所示:\about\press\2011。用斜杠替换反斜杠,并添加页面的文件名和文件扩展名(可以在“常规”选项卡上找到)。将整个内容放在您网站的根 URL 后面(例如http://www.mysite.com ')。
Tridion 在 PublishLocationUrl 属性中公开 URL 的路径。您可以通过 TOM.NET API 或通过在 Internet Explorer 的地址栏中输入 TCMURI(例如 tcm:4-264-64)来查看项目的原始 XML 来访问它。
但无论哪种情况,它们都只会返回 URL 的路径部分。您必须使用前面提到的 Quirijn 正确的基本 URL 作为前缀。
过去,我曾求助于扩展发布目标目的地的协议模式。在那里添加了一个 baseURL 属性,我可以从事件系统代码中访问它(想法是将链接邮寄给工作流批准者)。如今,您可以使用应用程序数据来做同样的事情。