多元文化中的 Sitecore 空白领域

本文关键字:空白 Sitecore 文化中 | 更新日期: 2023-09-27 17:56:51

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

  1. 创建包含 2 个未版本化字段的模板SportAnimal
  2. 基于此模板以 2 种语言创建项目 英语 &阿拉伯语
  3. 对于英语版本,在两个字段中填写"我是英语"
  4. 对于Arabian,将Animal字段留空,Sport ->设置Arabian value

结果:

当一个页面请求包含Contextlanguage = ArabianAnimal字段时,I am English,而Sport Arabian value

嗨尼古拉·米蒂科夫, 我有两个字段,其中未标记未版本化,如上图所示。你们其余的理解是100%正确的。此外,我没有实现任何自定义逻辑,也没有使用任何可能解决此问题的扩展。对于阿拉伯语和英语文化,我只是通过sc_lang查询字符串或URL中的"AR"来使用不同的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>



但是当我使用函数从代码隐藏渲染时,它不会创建问题并完美运行,如下面的代码所示:

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

但这似乎不是好的解决方案:)

多元文化中的 Sitecore 空白领域

Syed,

看起来您的情况正在发生语言回退,因为英语是 Sitecore 中设置的默认语言。每当您使用getItem函数时,都会传递当前的上下文lang,也可以进行空点检查。

例如:

.GetItem(home.ID, language)

希望这会起作用!!

干杯!!

尼桑特

感谢大家, 最后,在分析了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 窗体 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