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

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

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

如果我知道我可以禁用清理Cd_deployer中的TransportPackages。conf。xml,通过将清理更改为false: <WorkFolder Location="C:\tridion\work" Cleanup="false"/>, 我看到Tridion生成了我的页面的两个版本:

  1. 根\页。html(具有unrendered内容,带有路径页面文件。ToString())
  2. 根\转换\页。html(有完整的内容-我想要的内容)

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

谢谢!

有帮助吗?

解决方案

您的页面是否使用动态组件演示?如果是这样,发布和部署的页面级HTML将只包含组件演示文稿的"包含指令

<tcdl:ComponentPresentation ... />

在部署期间发生的唯一事情是,在发布/传输期间使用的"技术不可知"语言被翻译成JSP标记或ASP.NET 服务器控制包括,在这两种情况下,它通常翻译成以 tridion:ComponentPresentation.

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top