在支持SDL Tridion关键字路径(Keyword Path in SDL Tridion)

2019-09-18 11:29发布

可能有人请就如何可以做到这一点的一些想法? 这可能是非常简单和基本知识,但我无法弄清楚这一点。

这里是我的要求。

我有孩子关键字B和B A类有另一个孩子关键字C.

我想在我的组件模板,譬如说如选择关键字的确切路径,如果用户选择的关键字C,我需要与路径的价值像A \ B \ C而不是仅仅作为C.但是外表套上总是给我的价值为C,而不是作为A \ B \ C。 组件架构使用“树”视图中选择的关键字。

我应该写Dreamweaver中自定义函数来处理呢? 或者根本的tridion附带了一些处理程序呢?

任何帮助将高度赞赏。 谢谢!

谢谢,KK

Answer 1:

正如你刚刚发现,在外表套上关键字层次是“假的” - 关键词存储为一个平面列表,而不是作为一个分级列表(像你这样有文件夹)。 关于家长和孩子关键字的信息存储在关键字本身。

有方案来解决这个 - 当然,比如你可以在C#TBB使用:

Keyword keyword = new Keyword(new TcmUri("tcm:28-3368-1024"), session);
string hierarchy = keyword.Title;
bool done = false;
while(!done)
{
    if (keyword.ParentKeywords.Count > 0)
    {
        foreach (Keyword k in keyword.ParentKeywords)
        {
            hierarchy = k.Title + " > " + hierarchy;
        }
        keyword = keyword.ParentKeywords[0];
    }
    else
        done = true;
}
// Include Category
hierarchy = keyword.OrganizationalItem.Title + " > " + hierarchy;

编辑:更新递归“上去”的层次结构。 然而,一个关键词可以有多个家长,我会离开,你来修复...



Answer 2:

一个类别中的关键字是唯一的,所以外表套上可以通过它们的名字(和/或当然还有他们的中医URI)安全地引用它们。 而且,由于一个关键字可以有多个家长,有可能不是一个单一的路径从根到您的关键字领先。

如果您的情况的类别可以表示为一棵树,你当然可以建到每个关键字的单一路径。 在这种情况下,你需要一些(C#)代码,走到父母轴并连接的名称。 您可以把这个代码:

  1. 在TBB,你把你的模板DWT前OR
  2. 在自定义Dreamweaver的功能。

无论哪种方式,将正常工作。



文章来源: Keyword Path in SDL Tridion