2013-01-25 3 views
6

KeywordFieldDefinitionData型フィールドのカテゴリのTCM URIを取得します。KeywordFieldDefinitionDataタイプフィールドのカテゴリのTCM URIを取得するにはどうすればよいですか?

私はコンポーネントのメタデータフィールドを読み取るために、リンクのコードの下に使用しています

: -

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

私はReference.csクラスのカテゴリーとCategoryFieldsのプロパティを見ることができるコアサービスにrefenceが与えられたとき(自動生成)、CategoryクラスとCategoryFieldsプロパティにアクセスするためのFieldクラス(上記のcode.googleリンクで定義)に定義されているプロパティはありません。でも、上記の

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

動作していない、あなたたちの誰もがこれを分析し、返信してください - :私は方法を次で定義されたプロパティに試してみます。

ありがとうございます!私はあなたがキーから猫オブジェクトとすべてのキーワード情報からカテゴリ情報を取得することができ、以下のコードは、上記のコードで

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

キーワードが含まれている(キーワードがコンポーネント内のKeywordFieldから読み取られている)IDのIDを取得することを正しく理解していますか? –

+0

面白い質問ですが、[Area 51 Tridion特有の提案](http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2)に関心をお寄せください。同じSOアカウントでサインアップしてください。 –

答えて

4

オブジェクトタイプが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

はあなたが各SchemaFieldを読む必要が

+0

私は、TOM.NETではなくCore Serviceに関する質問があると思います。また、キーワードからカテゴリURIを取得したいこのコードは、URIを使用してカテゴリを取得することを示しています –

関連する問題