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

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

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

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

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

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

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

Спасибо KK

2 ответа

Как вы только что узнали, иерархия ключевых слов 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;

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

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

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

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

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

Другие вопросы по тегам