【问题标题】:How to access transformed html page in Custom Page Deployer?如何在自定义页面部署器中访问转换后的 html 页面?
【发布时间】:2012-07-26 14:03:02
【问题描述】:

假设我们必须在自定义部署程序中访问已发布页面的内容。 这部分代码位于扩展 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 生成了我的页面的两个版本:

  1. root\page.html(具有未渲染内容,路径为 pageFile.ToString())
  2. root\transformed\page.html(内容完整——我想要的内容)

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

谢谢!

【问题讨论】:

    标签: tridion tridion2009 tridion-content-delivery


    【解决方案1】:

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

    <tcdl:ComponentPresentation ... />
    

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

    Dynamic Component Presentation 本身的 HTML 片段将单独发布,并作为单独的项目存储在配置的存储中。

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

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

    【讨论】:

    • 是的,它使用动态组件表示,这正是我所需要的。虽然我理解你所说的,但仍然有点不清楚为什么当我将 Cleanup 设置为 false 时,那个 \transformed\ 文件夹中的页面是完整的(没有包含说明和生成的内容)?
    • 如果您使用 DCP,则 HTML 不存在。但无论哪种方式:您正在那里查看临时文件,我真的不建议这样做。看看写到代理中的内容,它应该与我上面所说的一致。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    相关资源
    最近更新 更多