【问题标题】:Issue in accessing package variable in Dreamweaver Template在 Dreamweaver 模板中访问包变量时出现问题
【发布时间】:2012-10-10 06:35:28
【问题描述】:

我在访问页面模板的 DWT 中的包变量时遇到问题。

我有一个包含 4 个 TBB 的复合页面模板,如下所示:

1) Constant TBB - 这个 TBB 将组件(嵌入式多值组件)的所有值作为键值对读取,并将它们推送到包中。 例如:

Item item = this._package.CreateStringItem(contentType, "test");
this._package.PushItem("key", item);

2) 页面模板的C# DLL - 包含页面模板的逻辑

3) 页面模板的DWT - 这里输出所有的包变量。

4) 默认完成操作

我面临的问题如下:

在我的 DWT 中,我想将组件模板的元数据与常量 TBB 中设置的包变量进行比较。

我使用的语法是:

<!-- TemplateBeginIf cond="ComponentTemplate.Metadata.section_name = key" -->

其中 key 是在常量 TBB 中设置的包名称,值为“test”

但不知何故,这个包变量“key”给出的值为 0 而不是测试。

谁能告诉我到底哪里出错了。

【问题讨论】:

  • 试试:
  • 你是如何检查变量值为0的?在条件之前尝试@@key@@,看看你得到了什么,然后与模板生成器中的包变量进行比较。
  • 我也试过这个: 好像不行。
  • 嗨 Vikas,我使用 @@key@@ 以同样的方式检查了它,然后我发现它的值为 0 。但在包中的模板生成器中,它向我显示了正确的值作为“测试”。

标签: tridion tridion-2011 dwt


【解决方案1】:

您应该通过替换来指定要添加到包中的项目类型:

Item item = this._package.CreateStringItem(contentType, "test");

Item item = this._package.CreateStringItem(contentType.Text, "test");

您还应该使用以下方法确认变量已正确传递给 DWT

@@test@@

条件之外。这将显示您要与之比较的值。

【讨论】:

    【解决方案2】:

    请检查以下内容。

    1. 检查一个包中是否有多个具有“Key”名称的变量。
    2. 检查您是否在包装中的正确位置进行验证。

    【讨论】:

    • 嗨 Vikas,1。只有 1 个名为“Key”的变量。 2.我还验证了包装中的位置。这似乎是正确的。
    • 这有点奇怪,你是不是在你的c# tbb 执行后验证过,因为每次tbb 执行后包结果可能会改变...否则尝试使用任何其他变量名...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2021-07-25
    • 2017-12-28
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多