tridion - 如何在自定义页面部署器中访问转换后的 html 页面?

标签 tridion tridion2009 tridion-content-delivery

假设我们必须在自定义部署程序中访问已发布页面的内容。
这部分代码位于扩展 PageDeploy 类的 CustomModule 中的 processPage 方法中。

这样,我将获得正在发布的页面,但该页面的内容不会被转换(不会呈现该页面中的组件)。

public void processPage(Page page, File pageFile) throws ProcessingException {
    File file = new File(pageFile.toString());
}

如果我知道我可以通过将 Cleanup 更改为 false 来禁用 cd_deployer.conf.xml 中的 TransportPackages 的清理:<WorkFolder Location="C:\tridion\work" Cleanup="false"/>,我看到 Tridion 生成了我的页面的两个版本:
  • root\page.html(具有未渲染的内容,路径为 pageFile.ToString())
  • root\transformed\page.html(具有完整内容 - 我想要的内容)

  • 为什么当我使用转换后的页面文件路径创建新文件并读取它时,我得到的 html 代码的内容比原始 html 还要少?这是因为在此阶段的部署页面仍未呈现和完成还是...?

    谢谢!

    最佳答案

    您的页面是否使用动态组件演示?如果是这样,则发布和部署的页面级 HTML 将仅包含组件表示的“包含指令”

    <tcdl:ComponentPresentation ... />
    

    部署期间唯一发生的事情是发布/传输期间使用的“与技术无关”的语言被翻译成 JSP 标记或 ASP.NET 服务器控件包括,在这两种情况下,它通常翻译成以 tridion:ComponentPresentation 开头的东西。 .

    动态组件表示本身的 HTML 片段将单独发布,并作为单独的项目存储在配置的存储中。

    完整的 HTML 将仅在请求页面时(用于为访问者提供服务)组成。在那个阶段,将调用 JSP 标记库或 ASP.NET 服务器控件,从存储中读取组件表示的 HTML 片段并将其注入(inject)页面的 HTML“线框”。

    有了这些知识,它确实解释了为什么在 Deployer 扩展中找不到动态组件表示的 HTML 片段:将 DCP 片段合并到 Page shell 仅在请求页面时发生,而不是在部署页面时发生。

    关于tridion - 如何在自定义页面部署器中访问转换后的 html 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671026/

    相关文章:

    tridion - 是否可以在SDL Tridion UI 2012中编辑组件链接?

    tridion - 如何使用Core服务设置多媒体链接字段?

    components - 配置多媒体组件以在网站文件夹中发布

    tridion - 在 Tridion 2009 中,是否可以抑制 RTF 图像工具的高级对话框?

    tridion - 编辑某些组件时出现 SDL Tridion SiteEdit 2009 SP2 XPath 错误

    从 SDL Tridion 5.3sp1 到 2011sp1 的 Tridion 迁移问题

    tridion - 在 tridion 发布时将外部多媒体文件推送到打包中

    tridion - 如何调试 Tridion 模板和工作流程?