6

KeywordFieldDefinitionData タイプ フィールドのカテゴリの TCM URI を取得したいと考えています。

以下のリンクのコードを使用して、コンポーネントのメタデータ フィールドを読み取ります:-

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

Reference.csクラスでCategoryおよびCategoryFieldsプロパティを確認できます(コアサービスへの参照が指定されたときに自動生成されます)が、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); }
    }

上記でも機能していません。どなたかこれを分析して返信してください。

前もって感謝します!

4

2 に答える 2

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;
   }
}
于 2013-01-25T14:00:35.323 に答える
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>;

上記のコードでは、Cat オブジェクトからカテゴリ情報を取得し、キー オブジェクトからすべてのキーワード情報を取得できます。

于 2013-01-25T07:12:57.647 に答える