2012-06-25 9 views
6

Könnte jemand bitte eine Idee geben, wie dies getan werden kann? Dies könnte sehr einfach und grundlegend sein, aber ich konnte das nicht herausfinden.Stichwort Pfad in SDL Tridion

Hier ist meine Anforderung.

ich eine Kategorie A mit Kind Stichwort B haben und B bekam ein weiteres Kind Wörter C.

ich den genauen Pfad des gewählten Schlüsselwort in meiner Komponentenvorlage erhalten möchten, sagen für zB wenn der Benutzer Stichwort C auswählt, Ich brauche den Wert mit Pfad wie A \ B \ C und nicht nur als C. Aber Tridion gibt mir immer den Wert als C und nicht als A \ B \ C. Das Komponentenschema verwendet die Ansicht "Struktur", um die Schlüsselwörter auszuwählen.

Soll ich benutzerdefinierte Funktionen von dreamweaver schreiben, um damit umzugehen? Oder kommt Tridion mit einem Handler dafür?

Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

Danke, KK

Antwort

5

Keywords innerhalb einer Kategorie sind einzigartig, so Tridion, um sie durch ihren Namen sicher beziehen können (und/oder deren TCM URI natürlich). Und da ein Keyword mehrere Eltern haben kann, gibt es möglicherweise keinen einzigen Pfad, der vom Stamm zu Ihrem Keyword führt.

Wenn in Ihrer Situation die Kategorie als Baum dargestellt werden kann, können Sie natürlich einen einzelnen Pfad zu jedem Schlüsselwort erstellen. In diesem Fall benötigen Sie einen Code (C#), der die Elternachse aufruft und die Namen verkettet. Sie können diesen Code setzen entweder:

  1. in einem TBB, die Sie in Ihre Vorlage setzen, bevor die DWT OR
  2. in einer benutzerdefinierten Dreamweaver-Funktion.

Jeder Weg wird gut funktionieren.

+0

Danke Frank, dass du mir geholfen hast. Das ist wirklich ein wertvoller Vorschlag! Danke vielmals! – Krishnakumar

8

Wie Sie gerade herausgefunden haben, ist die Keyword-Hierarchie von Tridion "falsch" - Keywords werden als flache Liste gespeichert, nicht als hierarchische Liste (wie bei Ordnern). Die Informationen zu den Schlüsselwörtern Eltern und Kinder werden im Schlüsselwort selbst gespeichert.

Es gibt Lösungen für diese - natürlich, zum Beispiel Sie dies in einer C# TBB verwenden:

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: aktualisiert, um die Hierarchie "go up" rekursiv. JEDOCH kann ein Schlüsselwort mehrere Eltern haben, ich überlasse es dir, es zu reparieren ...

+0

Vielen Dank Nuno für Ihren Vorschlag zu teilen. Das hilft wirklich! – Krishnakumar

+0

Wenn Nunos Antwort Ihnen bei der Lösung Ihres Problems geholfen hat, akzeptieren Sie es, indem Sie auf das große Häkchen auf der linken Seite klicken. –