Путь ключевого слова в SDL Tridion

Может ли кто-нибудь дать представление о том, как это можно сделать? Это может быть очень просто и элементарно, но я не мог понять это.

Вот мое требование.

У меня есть категория A с дочерним ключевым словом B, а B получил еще одно дочернее ключевое слово C.

Я хочу получить точный путь выбранного ключевого слова в моем шаблоне компонента, скажем, например, если пользователь выбирает ключевое слово C, мне нужно значение с путем как A\B\C, а не только как C. Но Tridion всегда дает мне значение как С, а не как А\В\С. Схема компонентов использует представление «Дерево» для выбора ключевых слов.

Должен ли я писать собственные функции Dreamweaver, чтобы справиться с этим? Или у tridion есть какой-то обработчик для этого?

Любая помощь будет высоко ценится. Спасибо!

Спасибо, КК


person Krishnakumar    schedule 25.06.2012    source источник


Ответы (2)


Как вы только что узнали, иерархия ключевых слов Tridion является «фальшивой» — ключевые слова хранятся в виде плоского списка, а не в виде иерархического списка (как в случае с папками). Информация о родительских и дочерних ключевых словах хранится в самом ключевом слове.

Для этого есть решения - конечно, например, вы можете использовать это в С# 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;

РЕДАКТИРОВАТЬ: Обновлено, чтобы рекурсивно «подниматься» по иерархии. ОДНАКО у ключевого слова может быть несколько родителей, я оставлю это на ваше усмотрение...

person Nuno Linhares    schedule 25.06.2012
comment
Спасибо, Нуно, что поделились своим предложением. Это действительно помогает! - person Krishnakumar; 26.06.2012
comment
Если ответ Нуно помог вам решить вашу проблему, примите его, нажав на большую галочку слева. - person Frank van Puffelen; 30.06.2012

Ключевые слова внутри категории уникальны, поэтому Tridion может безопасно ссылаться на них по их имени (и/или, конечно, по их TCM URI). А поскольку у ключевого слова может быть несколько родителей, может не быть единого пути, ведущего от корня к вашему ключевому слову.

Если в вашей ситуации категорию можно представить в виде дерева, вы, конечно, можете построить один путь к каждому ключевому слову. В этом случае вам понадобится некоторый (C#) код, который проходит по оси родителей и объединяет имена. Вы можете поместить этот код либо:

  1. в TBB, который вы помещаете в свой шаблон перед DWT ИЛИ
  2. в пользовательской функции Dreamweaver.

В любом случае будет работать нормально.

person Frank van Puffelen    schedule 25.06.2012
comment
Спасибо, Фрэнк, что помог мне. Это действительно ценное предложение! Большое спасибо! - person Krishnakumar; 25.06.2012