修复 Kentico 中 lang 标签的可访问性错误
Fixing accessibility error for lang tag in Kentico
我遇到了站点改进辅助功能错误,我的页面没有定义 "lang tag"。我如何在 Kentico 中完成此操作?
可能有两种方法可以实现这一点。一种是通过 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>
这应该可以解决所有问题。
推荐的方法是打开~/CMSPages/PortalTemplate.aspx web 表单,像你一样手动编辑lang 属性觉得合适。
请注意,一般情况下不建议修改Kentico系统文件,但在这种情况下,这是最好的方法。请记住记录您所做的所有更改。
编辑:
不涉及任何自定义的其他解决方案是使用 CMSPortalTemplatePage web.config 键设置自定义路径 PortalTemplate 文件。这样你就可以克隆 Kentico 的 PortalTemplate.aspx,在这个克隆文件中进行修改并保留原始文件。
可能的用法:
<add key="CMSPortalTemplatePage" value="~/CMSPages/CustomPortalTemplate.aspx" />
我遇到了站点改进辅助功能错误,我的页面没有定义 "lang tag"。我如何在 Kentico 中完成此操作?
可能有两种方法可以实现这一点。一种是通过 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>
这应该可以解决所有问题。
推荐的方法是打开~/CMSPages/PortalTemplate.aspx web 表单,像你一样手动编辑lang 属性觉得合适。
请注意,一般情况下不建议修改Kentico系统文件,但在这种情况下,这是最好的方法。请记住记录您所做的所有更改。
编辑:
不涉及任何自定义的其他解决方案是使用 CMSPortalTemplatePage web.config 键设置自定义路径 PortalTemplate 文件。这样你就可以克隆 Kentico 的 PortalTemplate.aspx,在这个克隆文件中进行修改并保留原始文件。
可能的用法:
<add key="CMSPortalTemplatePage" value="~/CMSPages/CustomPortalTemplate.aspx" />