2012-10-25 54 views
3

任何人都可以幫助我從給定關鍵字獲取完整類別路徑。我給如下一個示例中,如何從Tridion中的關鍵字獲取完整類別路徑

實施例:

類別1 ---->關鍵字1 ----->關鍵字11,

從元數據說我得到了值「關鍵字11 「,但我需要整個路徑即/類別1 /關鍵字1 /關鍵字11.

任何人都可以幫助我如何使用c#在模板構建塊中實現此目的。

+0

請考慮提交到外表套上51區的建議得到一個專用的Q&在http://area51.stackexchange.com/proposals/38335/tridion?referrer=eo63snjNlUWNn9xqeeO2NA2 –

回答

3

下面的代碼應該可以幫助您獲得路徑。

bool isRecursive = false; 
KeywordField kwdField = (KeywordField)metaFields["kwdField"]; 
Keyword curKwd = new Keyword(kwdField.Value.Id, engine.GetSession()); 
string kwdPath = curKwd.Title; 
while (!isRecursive) { 
    if (curKwd.ParentKeywords.Count > 0){ 
    foreach (Keyword kwd in curKwd.ParentKeywords) { 
     kwdPath = kwd.Title + "/" + kwdPath; 
    } 
    curKwd = curKwd.ParentKeywords[0]; 
    } else { 
    isRecursive = true; 
    } 
} 
kwdPath = curKwd.OrganizationalItem.Title + "/" + kwdPath; 
+0

取決於您的.Net(3.5+)版本,您可以使用Linq: String.Join(「/」,myKeywordField.Value.ParentKeywords.Select(kw => kw.Title).ToArray()); –

+0

一個關鍵字與組件的元數據關聯。我有Component對象和Component.Metadata [「keyword_value」]返回XMLElement。這樣我就無法檢索「KeywordField」對象。你能否爲此提供解決方案? – user1773981

+0

它與您從組件讀取內容字段的方式相同。這提供了元數據字段'ItemFields metaFields = new ItemFields(component.Metadata,component.MetadataSchema);' –

4

也許你可以試着和下面的一個玩法:

  • keyword.ParentKeywords遞歸來創建你正在尋找的路徑。
  • OrganizationalItem oi = keyword.OrganizationalItem; //得到所有組織項目
  • keyword.OwningRepository

希望幫助!

+0

用於支持SDL Tridion一個網站能否請您提供一些代碼片段如何從值「關鍵字11」獲取Keyword對象? – user1773981

+1

TBB:'KeywordField kwdField =(KeywordField)metaFields [「kwdField」];''和'kwdField.Value'或'Values'(如果它是多個)。 –

相關問題