6

我正在生成一个 Tridion 二进制链接,如下所示:

  1. Razor TBB 为二进制链接生成链接解析器语法
  2. 链路解析器 TBB 生成 TCDL。

输出作为输出类型 REL 的动态组件模板发布。发布目标指定 ASP.NET。

我在代理数据库的 COMPONENT_PRESENTATIONS 表中看到的输出如下:

<tcdl:Link type="binary" origin="tcm:0-0-0" 
           destination="tcm:34-669" templateURI="tcm:0-0-0" 
           linkAttributes="" textOnFail="true" addAnchor="" 
           variantId="">Document2</tcdl:Link>

所以您至少希望看到文本“Document2”

如果我手工制作一个二进制链接控件<tridion:BinaryLink..../>,这工作得很好,但是上面列出的 TCDL 没有生成可见的输出。

可能出了什么问题?接下来我应该调查什么?

4

1 回答 1

7

我们注意到 Link Resolver TBB 没有为二进制类型生成正确大小写的相同行为。它被生成为<tcdl:Link type="binary" ../>而不是<tcdl:Link type="Binary" ../>(注意小写b而不是大写B,很难抓住)。REL TCDLTagRender 区分大小写,不解析小写 type:binary 的 tcdl:link,您将在 cd 日志文件中看到警告消息(假设您将日志级别设置为警告或调试)。

"WARN  LinkTagRenderer - Link type does not exist."

解决方法是通过引入新的 TBB 将小写字母的输出替换binary为大写字母。Binary我们将此作为 TBB 的一部分包括在内,以解决任何多媒体链接(如 pdf、doc 等)的 RTF 字段二进制链接解析。

您在 TBB 中使用如下所示的二进制字符串替换小写二进制。

 string output = package.GetValue(Package.OutputName);
 output = output.Replace("type=\"binary\"", "type=\"Binary\"" );
于 2013-01-23T04:29:40.763 回答