2013-01-25 14 views
6

मैं कीवर्ड फ़ील्डडिफिनिशनडेटा प्रकार फ़ील्ड के लिए एक श्रेणी के टीसीएम यूआरआई लाने के लिए चाहता हूं।कीवर्ड फ़ील्डडिफिनिशनडेटा फ़ील्ड फ़ील्ड के लिए श्रेणी के टीसीएम यूआरआई कैसे प्राप्त करें?

मैं लिंक के नीचे दिए गए कोड का उपयोग कर रहा एक घटक के मेटाडाटा क्षेत्रों को पढ़ने के लिए: -

https://code.google.com/p/tridion-practice/wiki/ChangeContentOrMetadata

मैं Reference.cs कक्षा में श्रेणी और CategoryFields गुण (ऑटो उत्पन्न होती है जब मुख्य सेवा करने के लिए refence दिया जाता है देख सकते हैं) लेकिन श्रेणी और श्रेणी फ़ील्ड गुणों तक पहुंचने के लिए फील्ड क्लास (उपरोक्त कोड.google लिंक में परिभाषित) में परिभाषित कोई संपत्ति नहीं है। मैं निम्नलिखित तरीके से संपत्ति परिभाषित करने की कोशिश की है: -

 public System.Reflection.PropertyInfo Category 
    { 
     get { return definition.GetType().GetProperty("Category", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic); } 
    } 

ऊपर भी काम नहीं कर रहा, तुम लोगों के किसी को भी इस और उत्तर का विश्लेषण करें।

अग्रिम धन्यवाद!

+0

क्या मैं आपको सही ढंग से समझता हूं कि आप उस श्रेणी की आईडी प्राप्त करना चाहते हैं जिसमें एक कीवर्ड है (कीवर्ड को किसी घटक में कीवर्ड फ़ील्ड से पढ़ा जा रहा है)? –

+0

दिलचस्प सवाल, क्या हम आपको [क्षेत्र 51 ट्रिडियन विशिष्ट प्रस्ताव] (http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2) करने में रुचि रखते हैं। यदि आपके पास एक पल है तो उसी SO खाते से साइन अप करें। –

उत्तर

4

आप प्रत्येक SchemaField पढ़ने की जरूरत है परिभाषा डेटा और जांच करें कि टाइप KeywordFieldDefinitionData है और फिर श्रेणी जानकारी प्राप्त करें। कृपया नीचे नमूना स्निपेट देखें।

SchemaFieldsData schemaFields = (SchemaFieldsData)_client.ReadSchemaFields(
       "tcmuriofschema", true, readOptions); 
foreach (ItemFieldDefinitionData schemaField in schemaFields.Fields) { 
    switch (schemaField.GetType().Name) { 
     // handle other fields.. 
     // CategoryLink Fields 
     case "KeywordFieldDefinitionData": 
       KeywordFieldDefinitionData keywordTextSchemaField = (KeywordFieldDefinitionData)schemaField; 
       string LinkedCategoryTitle = keywordTextSchemaField.Category.Title; 
       string LinkedCategoryId = keywordTextSchemaField.Category.IdRef; 
       break; 
     default: 
       break; 
    } 
} 
0

मैं नीचे दिए गए कोड उपरोक्त कोड में आपकी समस्या

Publication publication = GetPublication(); 

      TcmUri uri = new TcmUri(int.Parse(_itemId), ItemType.Category, publication.Id.ItemId); 
      _session = engine.GetSession(); 
      Category cat = new Category(uri, _session); 

      Log.Debug("the uri is " + uri); 
      Log.Debug("the cat is " + cat); 

      Filter filter = new Filter(); 
      //filter.Conditions["IsRoot"] = true; // This works with Tridion 2011 only! 

      List<Keyword> keys = cat.GetKeywords(filter) as List<Keyword>; 

हल हो आशा है कि आप बिल्ली वस्तु से श्रेणी जानकारी और चाबी से सभी कीवर्ड जानकारी प्राप्त कर सकते हैं आपत्ति

+0

मुझे लगता है कि सवाल कोर सेवा के बारे में नहीं है TOM.NET। साथ ही वे कीवर्ड से श्रेणी यूआरआई प्राप्त करना चाहते हैं। यह कोड अपने यूआरआई का उपयोग कर एक श्रेणी प्राप्त करने से पता चलता है –

संबंधित मुद्दे