2012-06-25 93 views
6

難道有人請告訴我們如何做到這一點嗎?這可能非常簡單和基本,但我無法弄清楚這一點。SDL Tridion中的關鍵字路徑

這是我的要求。

我有孩子關鍵詞B的一個A類和B獲得了另一個孩子關鍵字C.

我想在我的組件模板選擇的關鍵字的確切路徑,譬如說例如,如果用戶選擇的關鍵字C,我需要像A \ B \ C這樣的路徑的值,而不僅僅是C,但是Tridion總是給我C值而不是A \ B \ C。組件模式使用「樹」視圖來選擇關鍵字。

我應該編寫Dreamweaver自定義函數來處理這個問題嗎?或者tridion是否帶有一些處理程序?

任何幫助將不勝感激。謝謝!

感謝, KK

回答

5

一個類別中的關鍵字是唯一的,所以外表套上可以通過它們的名字安全地引用他們(和/或他們的課程中醫URI)。由於一個關鍵字可以有多個父母,因此可能沒有從根到關鍵字的單一路徑。

如果在您的情況下類別可以表示爲樹,您當然可以爲每個關鍵字建立一條路徑。在這種情況下,您需要一些(C#)代碼,它們沿着父代軸線並連接名稱。您可以將此代碼放在:

  1. 在您在自定義Dreamweaver的功能載重噸
  2. 之前把你的模板TBB。

無論哪種方式將工作正常。

+0

謝謝弗蘭克幫助我。這真是一個很有價值的建議!非常感謝! – Krishnakumar

8

正如剛剛發現的那樣,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; 

編輯:更新遞歸「上去」的層次結構。然而,一個關鍵字可以有多個父母,我會留給你修復...

+0

謝謝Nuno分享你的建議。這真的有幫助! – Krishnakumar

+0

如果Nuno的答案幫助您解決了問題,請點擊左側的大號複選標記以接受它。 –