【问题标题】:How should I get Keyword Key from DWT我应该如何从 DWT 获取 Keyword Key
【发布时间】:2012-09-20 09:10:27
【问题描述】:

这类似于XSLT question,但最终用于 DWT。

我们可以得到keyword's key via a C# TBB。

ItemFields fields = new ItemFields(component.Metadata, component.Schema);
KeywordField keywordField = fields["state"] as KeywordField;

String stateValue = package.EvaluateExpression("Component.Metadata.state");

package.PushItem("statekey", package.CreateStringItem(ContentType.Text, keywordField.Value.Key));

在 DWT 中,我有时需要组件中选定关键字的 key

从包中添加和获取这些是正确的方法吗?

@@Component.Metadata.State@@ 让我获得了价值。直接从 DWT 引用密钥会很好,但我没有看到任何建议 DWT 公开它。

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    作为约翰答案的另一种选择。对 Will 的“获取组件模板 Uris”采取类似的方法并编写一个 TBB 迭代类别的关键字并将它们写入具有所需输出值的包中怎么样?然后,您就可以通过“双重评估”直接从 DWT 使用这些值,例如:

    @@Keyword${Component.Metadata.state}Value@@
    

    【讨论】:

    • 聪明,我喜欢这种方法,这让我们选择何时获取密钥。我想我们可以对关键字元数据做同样的事情。
    • 你几乎可以对任何事情做同样的事情。它只是预取数据。对于 CT URI,它允许您避免对它们进行硬编码。在这种情况下,它允许您轻松访问通常不可用的值。缺点是它在处理器周期和内存方面略有浪费(获取和存储所有不必要/未使用的数据)
    【解决方案2】:

    我怀疑为此你需要按照你的建议走 TBB 路线,甚至编写你自己的 DWT 函数来公开它。

    您可以在此处找到创建 DWT 函数的示例:http://www.tridiondeveloper.com/get-and-set-variables-in-dwts

    【讨论】:

    • 很好的答案。我认为您需要使用自定义函数解决的唯一潜在问题是 DWT 仅公开关键字值而不是其 URI 或有关关键字来自的类别的任何信息,因此您的 C# 代码必须搜索所有类别的关键字(并希望它是唯一的),或者允许传递类别名称/URI,您需要在 DWT 中对其进行硬编码。
    • 我明白了——从 DWT 来看,关键字只是“文本”。我投票支持 Bart Koopman 的想法,以允许 ability to get keyword by key 并留下一条待处理的评论,要求反过来——按关键字获取键(在 DWT 中)。
    猜你喜欢
    • 2019-06-03
    • 2022-01-25
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    相关资源
    最近更新 更多