2

我有一个关键字类别,在他们的术语中有元数据模式。该模式由两个字段组成,每个字段都是类别。非常简单的结构,但在发布过程中,它将那些元数据关键字字段解析为错误的 tcm uris 而不是关键字的标题,如下所示:在此处输入图像描述

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

乍一看,我的猜测是用于转换类别的内部模板是直接从数据库中读取元数据字段数据(或在 BL 层中足够接近),而不是对其应用任何蓝图规则(可能是为了性能)。

如果你看内容中的TCM Uris,当它们存储在数据库中时,它们都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 回答