gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:33:26 26 4
gpt4 key购买 nike

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

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com