这里是我的方案的简单理解,
- 创建2个未版本化领域模板
Sport
和Animal
- 2种语言英语和阿拉伯语创建基于此模板的项目
- 对于英语语言版本填补这两个领域“我的英语”
- 对于
Arabian
,离开Animal
栏为空,而Sport
- >设置Arabian value
结果:
当一个请求一个页面Context
, language = Arabian
, Animal
领域将显示I am English
,而Sport
将有Arabian value
。
您好尼古拉Mitikov,我有两个字段,其中如上面的图像未版本控制没有被标记。 你理解剩下的就是100%正确。 同时我还没有实现任何自定义逻辑或没有使用任何扩展可能的麻烦这一点。 为阿拉伯语和英语文化我只是用不同的URL通过sc_lang在URL查询字符串或“AR”这台就是这样背景下的语言。 下面是我的语言切换器简单的代码:
public string ItemEnglishURL
{
get
{
return string.Concat(Helper.GetItemUrlByCulture(Sitecore.Context.Item, "en"), CurrentQueryString);
}
}
public string ItemArabicURL
{
get
{
return string.Concat(Helper.GetItemUrlByCulture(Sitecore.Context.Item, "ar"), CurrentQueryString);
}
}
public static string GetItemUrlByCulture(Item item, string culture)
{
string itemUrl = string.Empty;
if (item != null)
{
using (new Sitecore.Globalization.LanguageSwitcher(culture))
{
itemUrl = LinkManager.GetItemUrl(item, new UrlOptions() { LanguageEmbedding = LanguageEmbedding.Always });
}
}
return itemUrl;
}
只是多了一个解释,基本都在同一个解决方案/场景,当我通过渲染
<li runat="server" id="navAncharLi"> <a runat="server" id="navAnchar"> <sc:Text ID="TextTitle" Field="Title" runat="server" Item="<%# Item %>" DisableWebEditing="true" /> <strong runat="server" id="TagSubTitle"> <sc:Text ID="TextSubTitle" Field="SubTitle" runat="server" Item="<%# Item %>" DisableWebEditing="true" /> </strong> </a> <em runat="server" id="navAncharHead"></em> </li>
但是,当我使用的功能从代码中呈现的背后,则它不会产生问题和下面的代码完美如一所示工作:
<li runat="server" id="navAncharLi"> <a runat="server" id="navAnchar"> <%# GetFieldValue(Item,"Title") %> <strong runat="server" id="TagSubTitle"> <%# GetFieldValue(Item,"SubTitle") %> </strong> </a> <em runat="server" id="navAncharHead"></em> </li>
public string GetFieldValue(Item itemObj, string fieldName) { return itemObj.Fields[fieldName].Value; }
但它不似乎是不错的解决方案:)