修复Kentico中lang标记的可访问性错误

时间:2016-09-10 09:46:33

标签: accessibility kentico

我正面临网站改进的辅助功能错误,我的网页没有定义“lang标记”。我怎样才能在Kentico中实现这个目标?

2 个答案:

答案 0 :(得分:2)

实现这一目标可能有两种方法。一个是通过Kentico的C#.NET代码,另一个是通过Javascript代码。我为您提供了两种解决方案

为了解决此问题,您已为工具修复了两个标记,以停止指向辅助功能错误。你必须设置" lang"以及" xml:lang"标签。通过纯Javascript实现此目的的一种方法如下。我提出这个解决方案,因为它独立于任何平台。

(function() {
       document.getElementsByTagName('html')[0].setAttribute('lang', 'en-US');
       document.getElementsByTagName('html')[0].setAttribute('xml:lang','en-US');
})(); 

您可以替换' en'使用您选择的语言正确指出正确的语言

在Kentico中,您可以通过将此代码放在主模板中来实现此目的,以便可以在所有页面上添加这些标记。

在您的Kentico主模板中,只需添加一个Head HTML Web部件并将此代码放入其中。

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    if (CurrentDocument != null)
    {          
        CMS.UIControls.ContentPage page= this.Page as CMS.UIControls.ContentPage;
        if (page != null)
        {
            string lang= CMS.Localization.LocalizationContext.CurrentCulture.CultureCode;
            page.XmlNamespace += " lang=\"" + lang + "\"";
            page.XmlNamespace += " xml:lang=\"" + lang + "\"";
        }
    }
}
</script>

这应该可以解决所有问题。

答案 1 :(得分:0)

推荐的方法是打开〜/ CMSPages / PortalTemplate.aspx 网络表单,然后根据需要手动编辑 lang 属性。

请注意,一般来说,不建议修改Kentico系统文件,但在这种情况下,这是最好的方法。请记住记录您所做的所有更改。

编辑:

其他不涉及任何自定义的解决方案是使用 CMSPortalTemplatePage web.config键设置自定义 PortalTemplate 文件的路径。通过这种方式,您可以克隆Kentico的PortalTemplate.aspx,在此克隆文件中进行修改并保留原始文件。

可能的用法:

 <add key="CMSPortalTemplatePage" value="~/CMSPages/CustomPortalTemplate.aspx" />