我正在尝试在 Dreamweaver 模板中使用 Get Label TBB,该模板解析 %%LabelKey%% 等表达式,并将它们替换为存储在发布元数据中的组件中的值。

我正在尝试使用标签来存储绝对 URL(例如 http://www.example.com ),但在尝试运行模板时在模板生成器中得到以下内容



DWT 代码类似于:

<a href="%%LogoLink%%" target="_blank" title="%%LogoLinkTitle%%" class="logo">
    <img src="@@Page.Publication.Metadata.parent_logo@@" width="95" height="24"
         alt="@@parent_logo0.alt@@">
</a>

问题是由 %%LogoLink%% 引起的。如果我删除模板工作正常。为什么 Tridion 试图用这个值做点什么?我认为它只会尝试解决它,如果它是 tridion:href

任何帮助表示赞赏。

完整的堆栈跟踪:

最佳答案

当您上传 DWT 时,Tridion 会尝试将 DWT 中的 <img src=... 映射到多媒体组件。需要执行此步骤以确保 DWT 与 BluePrinting 一起正常工作(需要将值存储为 TCM URI) 在 Dreamweaver 中始终可见(需要文件路径)。

为了进行这种映射,Tridion 使用任何 srchref 属性(以及任何 CSS 导入或 url() 构造)中的路径,并在该位置相对于 DWT 查找多媒体组件。

因此,如果存储在 /Building Blocks/System/Designs/My Page Design 下的 DWT 包含:

<img src="../Images/MyHeader.jpg"></img>

然后 Tridion 将查找名为 /Building Blocks/System/Images/MyHeader.jpg 的多媒体组件,并在找到匹配项时替换 src 值:
<img src="tcm:1-23"></img>

在您的 DWT 中,%%LogoLink%% 引起了问题,因为它看起来像是 URL 编码的(% 符号用作 URL 中的转义字符),但实际上并非如此。

大多数遇到类似问题的人最终会在他们的 DWT 中使用替代转义序列,并编写一个小的后处理 TBB,在执行 DWT 后将该转义序列转换回 %%。在您的情况下,只需选择一个不冲突的转义语法就足够了。

关于Tridion 2009 SP1 : Dreamweaver Template Error: ConvertURLToPath() can't decode URL: invalid escape,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10303109/

10-11 21:40