【问题标题】:Getting URL of published element in SDL Tridion获取 SDL Tridion 中已发布元素的 URL
【发布时间】:2012-01-13 10:34:46
【问题描述】:

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

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

【问题讨论】:

    标签: tridion


    【解决方案1】:

    Tridion 2011 PowerTools 虽未完成,也没有真正记录在案,但包含 2 个按钮,分别用于“在暂存中打开”和“在实时中打开”。

    【讨论】:

      【解决方案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 对象的一个​​实例。

      如果您在核心服务中执行此操作,则有点不同,您需要做的是创建一个 PublishLocationInfo 对象,该对象是从您的 Page 或 StructureGroup 对象属性 LocationInfo 投射的,如下所示:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          但无论哪种情况,它们都只会返回 URL 的路径部分。您必须使用前面提到的 Quirijn 正确的基本 URL 作为前缀。

          【讨论】:

            【解决方案5】:

            过去,我曾求助于扩展发布目标的协议模式。在那里添加了一个 baseURL 属性,我可以从事件系统代码中访问它(想法是将链接邮寄给工作流批准者)。 如今,您可以使用应用程序数据来做同样的事情。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-07-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-03-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多