Путь к ключевому слову в 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#) код, который поднимается по оси родителей и объединяет имена. Вы можете поставить этот код либо:
- в TBB, который вы положили в свой шаблон перед DWT ИЛИ
- в пользовательской функции Dreamweaver.
В любом случае будет хорошо работать.