假设我们必须在自定义部署程序中访问已发布页面的内容。
这部分代码位于扩展 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 生成了我的页面的两个版本:为什么当我使用转换后的页面文件路径创建新文件并读取它时,我得到的 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/