2

メタデータスキーマを持つキーワードを持つカテゴリがあります。そのスキーマは2つのフィールドで構成され、それぞれがカテゴリです。非常に単純な構造ですが、公開中に、次のように、これらのメタデータキーワードフィールドがキーワードのタイトルではなく、間違ったtcmurisに解決されます。ここに画像の説明を入力してください

2)デプロイヤーパッケージの内容

    <tcmc:Topic rdf:about="tcm:10-11325-1024">
      <rdfs:label>Analytics and optimization</rdfs:label>
      <rdfs:comment>Analytics and optimization</rdfs:comment>
      <tcmt:key>Analytics and optimization</tcmt:key>
      <tcmt:isAbstract>false</tcmt:isAbstract>
      <tcmt:isRoot>true</tcmt:isRoot>
      <tcmt:metadata rdf:parseType="Literal">
      <Metadata xmlns="uuid:a30b06d3-b6c5-4c2e-a53b-2b88771370ed"> 
        <Divisions xlink:title="cma" xmlns:xlink="http://www.w3.org/1999/xlink"         xlink:href="tcm:0-17737-1024">cma</Divisions>
        <InterestProfile xlink:title="CMAAnalytics" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="tcm:0-11175-1024">CMAAnalytics</InterestProfile> 
      </Metadata>
    </tcmt:metadata>
   </tcmc:Topic>

3)Tridionにクエリを実行するコードでは、次のURIが返されます。

    TaxonomyFactory taxonomyFactory = new TaxonomyFactory();
    TKeyword taxonomy = taxonomyFactory.GetTaxonomyKeywords(“tcm_of_the_category”);
    if (taxonomy != null && taxonomy.KeywordChildren != null)
    {
        foreach (var item in taxonomy.KeywordChildren) //keyword metadata contains tcm uri with zero instead of title
        {
           Keyword keywordChildren = item as Keyword;
           if (keywordChildren != null)
           {
               . . . 
           }
        }
    }

誰かがそのような問題を引き起こす可能性のあるアイデアを持っていますか?

4

2 に答える 2

3

一見すると、カテゴリの変換に使用される内部テンプレートは、メタデータフィールドデータをDBから直接(またはBLレイヤーで十分に近い)読み取り、ブループリントルールを適用していない(パフォーマンスのための可能性が高い)と思います。

コンテンツのTCMUrisを見ると、データベースに保存されると、それらはすべて0パブリケーションIDとして使用され、このIDは「読み取り」時に変更されます。

あなたの電話:これを欠陥と呼び、Tridionに修正を依頼すると、カテゴリの公開のパフォーマンスが低下するか、配信側で対処できます-公開Uriが0であり、あなたが知っている何らかの目的で使用する場合は、現在のパブリケーションIDに置き換える必要があります。

編集

それで私は戻っていくつかの簡単なハッキングをしました。実際、Tridionによると、フィールド「Divisions」の「Value」はキーワードURIであるため、キーワードのコンテンツをロードすることはできません。それを回避する方法はありません。

これを回避する簡単な方法:問題のキーワードをロードします:

TaxonomyFactory tf = new TaxonomyFactory();
Keyword taxonomy = tf.GetTaxonomyKeywords("tcm:5-369-512");
if(taxonomy != null && taxonomy.KeywordChildren != null)
{
    foreach (Keyword item in taxonomy.KeywordChildren)
    {
        NameValuePair key = (NameValuePair) item.KeywordMeta.NameValues["Field1"];
        string correctUri = key.Value.ToString().Replace("tcm:0-", "tcm:5-");
        Keyword theOtherKeyword = tf.GetTaxonomyKeyword(correctUri);
        string title = theOtherKeyword.KeywordName;
    }
}

さて...あなたはおそらくその創造的な出版物IDの書き直しに関して私より少し賢くなりたいでしょう:)

于 2013-02-27T13:58:10.357 に答える
1

フィールドはコンポーネントリンクとして表示され、特定のキーワードアイテム(オブジェクト)にリンクします。そのため、主にURIを取得しますが、それが自動的にValueプロパティに解決されるとは思いません。

したがって、次のステップは、URIを使用してKeywordオブジェクトを取得し、場合によっては適切なパブリケーションコンテキストを含めるようにURIを構築することです。

于 2013-02-27T18:31:23.747 に答える