我应该如何使用关键字元数据?

时间:2013-01-25 01:39:27

标签: tridion tridion-content-delivery

除了名称,键,值以及与其他关键字的关系之外,关键字本身也可以包含元数据。这允许作者通过选择元数据模式添加其他信息,然后添加任何内容:

  • 文本
  • 选择(带选项或类别的文本)
  • 链接

SDL Tridion Keyword Metadata

SDL Live Content介绍了如何retrieve Keyword properties。给定关键字myKeyword,我们可以将myKeyword.KeywordMeta.NameValues作为名称 - 值对(字典)。

我可以看到用例是在表示服务器端代码中,.NET或Java开发人员可以获得给定关键字的附加信息。

我理解关键字作为分类组件的选项,并为作者提供在其他领域中选择的选项。在我需要字段的大多数情况下,我建议使用一个组件,但是要确保我理解应该如何使用关键字元数据和任何程序限制。

  • 对于SDL翻译管理器,关键字元数据是否可以翻译?它看起来像keywords themselves are translatable as part of a Category(个别关键字取决于您的版本*)。我们当然可以在没有翻译管理器的情况下本地化关键字。
  • 关键字元数据是否适用于内容管理器?你会在C#TBB中使用它吗?

其他人想知道的更新:请务必检查您的SDL Tridion和SDL翻译管理器版本--Lars指出SDL翻译管理器3.0版确实具有单一关键字翻译功能。克里斯注意到GA的行为。如有疑问,请检查文档或在您的设置中确认。

5 个答案:

答案 0 :(得分:4)

在构建分类驱动导航时,您可以考虑使用关键字元数据。在过去,我添加了路径和其他数据的值,以便为了SEO而添加到网站,甚至尝试添加MM组件的链接,以用作渲染网页上的背景图像和按钮。但是在Tridion 2011 GA二进制数据没有发布到Broker,所以我需要一个不同的解决方案。这可能已在以后的版本中修复,但我最近没有尝试过。

答案 1 :(得分:4)

如果您使用Tridion 2011 SP1(包括翻译管理器3.0),您可以翻译单个关键字 - 而不仅仅是整个类别。

您还可以翻译关键字元数据 - 这也可以在以前版本的翻译管理器中使用(如果您使用的是Tridion 2011 GA),但我无法确定。它没有被列为3.0的一个新功能,它表明它可能在之前......但它当然也可能被错误地排除在新功能列表之外。 :)

答案 2 :(得分:3)

我正在研究一个广泛使用关键字元数据的项目。 对于内容管理员来说,这有点习惯了,因为你正在将内容转移到Tridion的早期阶段,这对于对某些内容进行分类只是微不足道。

但是,我们使用它来显示整个网站中显示的不同部门和组的动态联系人详细信息。还有一些其他网站范围内使用的文字,图片和指向使用这些关键字分类的内容的链接。

重新发布该类别和整个网站已更新,更正(编辑)和文本相同的内容。

我使用了关键字而不是动态组件,因为它似乎是动态内容的最佳使用方式,无论如何必须进行分类。这种方式即使在一年前发布时,关于此动态项目的其他分类的所有参考信息也始终保持最新。

顺便说一句,这个解决方案是使用Tridion 2009 SP1和Java。

我一直很喜欢经纪人和分类学; - )

答案 3 :(得分:3)

关于元数据,我总是将其视为“关于数据的数据”,因此我不会将其直接用于内容目的,对我来说唯一的例外是多媒体组件的元数据(因为你没有常规内容字段)。但后来看关键字,我认为这可能在某种程度上是我的规则的另一个例外。

如果您根据关键字构建导航,则会有其他数据的用例,包括(可翻译的)内容。关键字的元数据可通过翻译管理器进行翻译,但如果我没记错的话,它不会发送给经纪人。因此,要使用它,您必须将其存储为站点地图页面(通过页面中的模板/ C#TBB编写关键字元数据)。

答案 4 :(得分:2)

是的,我使用C#TBB来获取关键字元数据字段中的访问值。

首先,您必须使用参数架构将类别名称传递给C#TBB然后

其次,您必须通过以下代码访问该类别

 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>; 

最后,在访问密钥后,您必须循环访问密钥并获取元数据字段,如下所示

ItemFields fields = new ItemFields(key.Metadata, key.MetadataSchema);
相关问题