SDL Tridion中的关键字路径

时间:2012-06-25 14:14:49

标签: tridion tridion-2011 tridion2009

有人可以就如何做到这一点提出一些建议吗?这可能非常简单和基础,但我无法理解这一点。

这是我的要求。

我有一个带有子关键字B的类别A,而B有另一个子关键字C.

我想在我的组件模板中获取所选关键字的确切路径,例如,如果用户选择关键字C,我需要带有路径的值,如A \ B \ C而不仅仅是C.但Tridion总是给出我将值作为C而不是A \ B \ C。组件模式使用“树”视图来选择关键字。

我应该编写Dreamweaver自定义函数来处理这个吗?或者tridion是否附带了一些处理程序?

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

谢谢, KK

2 个答案:

答案 0 :(得分:9)

正如您刚刚发现的那样,Tridion关键字层次结构是“假的” - 关键字存储为平面列表,而不是分层列表(就像您对文件夹一样)。有关父级和子级关键字的信息存储在关键字本身中。

有解决方案 - 当然,例如你可以在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;

编辑:更新为递归“上升”层次结构。但是,如果某个关键字可以有多个父母,我会将其留给您修复......

答案 1 :(得分:5)

类别中的关键字是唯一的,因此Tridion可以通过其名称(和/或其TCM URI)安全地引用它们。由于关键字可以有多个父级,因此可能没有一条从根到关键字的路径。

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

    您在DWT OR之前放入模板的TBB中的
  1. 在自定义Dreamweaver函数中。
  2. 无论哪种方式都可以。