是否可以基于宏使母版页(Kentico 11 Portal Engine)上的Doctype动态化?

我继承了一个使用

文档类型的Kentico 11网站。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

客户希望使用Kentico的AMP模块创建其页面的AMP变体,该模块将子域用于任何AMP内容。 该模块还包含一个布尔宏{%AmpFilter.IsAmpPage()%},用于测试您当前是否正在提供AMP内容。 https://github.com/Kentico/kentico-amp

我遇到的问题是AMP似乎想要docp的文档类型

<!doctype html>

。我不想更改现有网站的文档类型,但看起来也无法在母版页模板的文档类型字段中评估宏。

想知道是否有人遇到过这样的问题;如果有一种方法可以在doctype字段中评估宏,或者我没有想到的其他方法。

qjf6835466qq 回答:是否可以基于宏使母版页(Kentico 11 Portal Engine)上的Doctype动态化?

添加HTML lang属性以支持WCAG 2.0准则时,存在类似的问题。但是,HTML属性由系统文件PortalTemplate.aspx控制,该文件使用Kentico页面的XmlNamespace属性。为了解决这个问题,我们在主页面的布局属性中添加了服务器端代码。但是,这也可以在添加到母版页的Web部件中完成。然后,您可以根据选择的任何条件来更改页面的DocType属性,而不是更改页面的XmlNamespace属性。这会满足您的需求吗?

<script runat="server"> 
/// Add Page_Load just to insert the "lang" attribute required by WCAG 2.0 Level A guidelines
protected void Page_Load(object sender,EventArgs e)
{
    if (CurrentDocument != null)
    {          
        CMS.UIControls.ContentPage page= this.Page as CMS.UIControls.ContentPage;
        if (page != null)
        {
            System.Globalization.CultureInfo c= new System.Globalization.CultureInfo(CMS.Localization.LocalizationContext.CurrentCulture.CultureCode);
            string lang= c.TwoLetterISOLanguageName;
            page.XmlNamespace += " lang=\"" + lang + "\"";
            page.XmlNamespace += " xml:lang=\"" + lang + "\"";
        }
    }
}
</script>

迈克

本文链接:https://www.f2er.com/3156470.html

大家都在问