是否可以混合模块化模板和传统VBScript CT?

est*_*why 6 tridion

特别是,我想到的情况是这样的:

@@RenderComponentPresentation(Component, "<vbs-legacy-ct-tcm-uri>")@@
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在我的情况下,VBS代码在尝试访问组件字段时会中断,从而出现"错误13类型不匹配...".

(所以,如果我给出答案,我会说:"部分地,没有实际用途")

编辑 上面的DWT来自另一个CT,因此它实际上是组件链接的渲染,这就是为什么无论如何Nuno的建议无参数过载都不会有效.顺便说一句,VBS中的以下行不会中断并给出正确的值:

WriteOut Component.ID
WriteOut Component.Schema.Title
Run Code Online (Sandbox Code Playgroud)

编辑2

多米尼克绝对是怀疑:这是一个缺失的依赖.

更深入地了解这些信息通常很有用:

假设,原始CT看起来像这样("VBScript [Legacy]"类型):

[%
Call RenderComponent(Component)
%]
Run Code Online (Sandbox Code Playgroud)

该CT旨在从PT(也是基于VBS)调用.PT在开始时有很多"#include"陈述.

现在故事发生了变化:从另一个基于DWT的CT调用相同的CT.显然(感谢大家的宝贵帮助!),依赖关系现在没有被包含在任何地方.

使原始CT再次工作的解决方案是明确地手工挑选并包括所有必需的VBS TBB,因此原始CT变为:

[%
#include "tcm:<uri-of-vbs-tbb>"
Call RenderComponent(Component)
%]
Run Code Online (Sandbox Code Playgroud)

Dom*_*nin 5

是的 - 完全可以混合和匹配传统和模块化模板.也许显然,你不能混淆和匹配template building blocks这两种技术.

在VBScript中,"错误13类型不匹配"有时被用作密码,实际上意味着"我无法识别您的某个变量的名称,(包括函数和子函数的名称)"在VBScript模板引擎中,变量来自页面模板可以在组件模板的范围内; 例如,将#includes放在PT中是非常常见的,因此它们可以被CT使用.我的猜测是你的组件模板试图使用这样的函数,而不是找到它.