Sitecore多语言-将项目解析为InternalLinkField会转换其语言

时间:2019-05-22 19:04:04

标签: sitecore

嗨,我现在正在开发一个多语言模块,但是在将字段解析为InternalLinkField时遇到问题。发生的是我有一个中文项目,但是当我得到它的一个字段并将其转换为InternalLinkField时,转换后的项目变为英语。这是示例代码

var field =(InternalLinkField)InnerItem.Fields [“ Test”];

所以我正在处理的当前项目是InnerItem,它是中文版本,当解析后,字段对象变成英语。因此,作为一种变通办法,我现在使用了上下文获取项来获取该语言的字段。但这是多余的,所以我想知道是否有一种方法可以获取具有正确语言版本的字段对象。

解决方法:

Item item = Sitecore.Context.Database.GetItem(field.TargetID,InnerItem.Language);

先谢谢了。

1 个答案:

答案 0 :(得分:0)

InternalLinkField 是Sitecore核心使用的系统类型。因此,除非计划扩展Sitecore,否则不建议将其用于自定义功能开发。如果要在数据模板中实现链接字段,则以下两种类型将适合您的需求:

  • LinkField (如果要覆盖内部和外部链接),即管理员可以选择一个Sitecore项或指定一个外部URL;您可以简单地使用GetFriendlyUrl()方法生成正确的链接为

Sitecore.Data.Fields.LinkField yourLinkField = yourItem.Fields["Link"];

var yourUrl = yourLinkField.GetFriendlyUrl();

  • Droplink (如果仅想限制选择Sitecore项),则该字段会将所选项的ID存储为值。