在多文化Sitecore的空场(Sitecore empty field in multi cult

2019-10-23 10:45发布

这里是我的方案的简单理解,

  1. 创建2个未版本化领域模板SportAnimal
  2. 2种语言英语和阿拉伯语创建基于此模板的项目
  3. 对于英语语言版本填补这两个领域“我的英语”
  4. 对于Arabian ,离开Animal栏为空,而Sport - >设置Arabian value

结果:

当一个请求一个页面Contextlanguage = ArabianAnimal领域将显示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; } 

但它不似乎是不错的解决方案:)

Answer 1:

赛义德,

貌似语言回退在你的情况下发生的,因为英语是Sitecore的设置默认语言。 当你正在使用的getItem函数传递当前上下文郎它,还与零点检查去我答是。

例如:

.GetItem(home.ID, language)

希望这将工作!

干杯!!

NISHANT



Answer 2:

感谢大家,最后分析Sitecore的支持后,已经到了一个结论,那是因为WFFM错误,这是在新的版本中得到解决的。

Sitecore的的支持答复低于

我已经调查的文件,它似乎可以通过WFFM模块下面的错误造成的: https://sdn.sitecore.net/SDN5/Products/Web%20Forms%20for%20Marketers/Web%20Forms%20for%20Marketers% 202,-D-,4 /释放%20Notes /释放%20History.aspx具有不同内容的语言工作,而在标题字段复制不正确的值的问题已固定的(426013)问题被固定在Web表单用于营销2.4转。 150619模块版本。 尝试注释掉Sitecore.Forms.Mvc.config以下处理器:

     <renderField>
         <processor type="Sitecore.Forms.Mvc.Pipelines.Fields.AddFallbackValue,
 Sitecore.Forms.Mvc"
             patch:before="*[@type='Sitecore.Pipelines.RenderField.AddBeforeAndAfterValues,
 Sitecore.Kernel']" />
       </renderField>

请让我知道这是否有助于

上述解决方案为我和Sitecore的支持,也证实了。

您可以发表评论,该处理器没有任何副作用您的解决方案。 或者,您可以将WFFM模块升级到Web窗体为营销2.4转。 150619版本: https://sdn.sitecore.net/Products/Web%20Forms%20for%20Marketers/Web%20Forms%20for%20Marketers%202,-d-,4/Module_Upgrades.aspx



文章来源: Sitecore empty field in multi culture