2012-06-25 13 views
6

Czy ktoś mógłby podać jakiś pomysł, jak to zrobić? To może być bardzo proste i podstawowe, ale nie mogłem tego zrozumieć.Ścieżka słów kluczowych w SDL Tridion

Oto moje wymaganie.

mam kategorię A ze słowem kluczowym dziecko B i B dostaje kolejne dziecko słowa kluczowego C.

chcę uzyskać dokładną ścieżkę wybranego słowa kluczowego w moim szablonu składnika, np powiedzieć, jeśli użytkownik wybierze słowa kluczowego C, Potrzebuję wartości ze ścieżką taką jak A \ B \ C, a nie tylko jako C. Ale Tridion zawsze daje mi wartość jako C, a nie jako A \ B \ C. Schemat komponentu używa widoku "Drzewo", aby wybrać słowa kluczowe.

Czy powinienem pisać niestandardowe funkcje Dreamweaver do obsługi tego? Lub czy tridion ma do tego jakiś program obsługi?

Każda pomoc będzie bardzo ceniona. Dziękuję Ci!

Dzięki, KK

Odpowiedz

5

słowa kluczowe w obrębie kategorii są unikalne, więc można bezpiecznie Tridion odnoszą się do nich po imieniu (i/lub ich TCM URI oczywiście). A ponieważ słowo kluczowe może mieć wielu rodziców, może nie być pojedynczej ścieżki prowadzącej od katalogu głównego do słowa kluczowego.

Jeśli w Twojej sytuacji kategorię można przedstawić jako drzewo, możesz oczywiście utworzyć pojedynczą ścieżkę do każdego słowa kluczowego. W takim przypadku potrzebujesz kodu (C#), który podchodzi do osi rodziców i łączy nazwy. Możesz umieścić ten kod albo:

  1. w TBB, które można umieścić w szablonie przed DWT LUB
  2. w niestandardowej funkcji Dreamweaver.

Tak czy inaczej zadziała.

+0

Dziękuję Frank za pomoc. To naprawdę cenna sugestia! Wielkie dzięki! – Krishnakumar

8

Jak tylko dowiedziałem się, Tridion słowo Hierarchia jest „fałszywy” - słowa kluczowe są przechowywane w postaci listy płaskiej, a nie jako listy hierarchicznej (jak to masz w folderach). Informacje o słowach kluczowych rodzica i dzieci są przechowywane w samym słowie kluczowym.

Istnieją rozwiązania dla tego - oczywiście, na przykład, można użyć to w 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; 

EDIT: Aktualizacja do rekurencyjnie „iść w górę” hierarchię. JEDNAK słowo kluczowe może mieć wielu rodziców, zostawię to, aby naprawić ...

+0

Dziękuję Nuno za podzielenie się Twoją sugestią. To naprawdę pomaga! – Krishnakumar

+0

Jeśli odpowiedź Nuno pomogła ci rozwiązać problem, zaakceptuj go, klikając duży znacznik wyboru po jego lewej stronie. –

Powiązane problemy