多文化中的Sitecore空字段

时间:2015-06-18 11:06:49

标签: c# sitecore multilingual

以下是对我的情景的简要了解,

  1. 使用2个无版本字段SportAnimal
  2. 创建模板
  3. 基于此模板以2种语言创建项目English&阿拉伯语
  4. 对于英语版本,请使用&#34填写这两个字段;我是英语"
  5. 对于Arabian,请将Animal字段留空,Sport - >设置Arabian value
  6. 结果:

    当一个人请求包含Context的网页时,language = ArabianAnimal字段会显示I am English,而Sport会显示Arabian value。< / p>

    Hi Nikolay Mitikov,            我有两个字段,其中未标记未版本,如上图所示。你们其他人的理解是100%正确的。我也没有实现任何自定义逻辑或没有使用任何可以解决这个问题的扩展。 对于阿拉伯语和英语文化,我只是通过sc_lang querystring或&#34; ar&#34;使用不同的URL。在url中设置了所有语境。 下面是我的语言切换器简单代码:

    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>
    

    但当我使用函数从代码后面渲染时,它不会创建问题&amp;工作完美,如下面的代码所示:

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

    但它似乎不是一个好的解决方案:)

2 个答案:

答案 0 :(得分:1)

赛,

在您的情况下看起来语言回退正在发生,因为英语是Sitecore中设置的默认语言。我的ans就是当你使用getItem函数传递当前上下文时,也可以使用null点检查。

例如:

.GetItem(home.ID, language)

希望这会有效!!

干杯!!

Nishant

答案 1 :(得分:0)

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

Sitecore支持的回复位于

之下
  

我调查了文件,似乎可能是由于   以下WFFM模块中的错误:   https://sdn.sitecore.net/SDN5/Products/Web%20Forms%20for%20Marketers/Web%20Forms%20for%20Marketers%202,-d-,4/Release%20Notes/Release%20History.aspx   工作时在标题字段中错误复制值的问题   已经修复了不同的内容语言(426013)问题是   固定在Web Forms for Marketers 2.4 rev。 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 rev。 150619版本:   https://sdn.sitecore.net/Products/Web%20Forms%20for%20Marketers/Web%20Forms%20for%20Marketers%202,-d-,4/Module_Upgrades.aspx