首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以基于宏使母版页(Kentico 11 Portal Engine)上的Doctype成为动态?

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

Stack Overflow用户
提问于 2019-11-06 04:53:07
回答 1查看 51关注 0票数 0

我继承了一个使用doctype的Kentico 11站点

代码语言:javascript
复制
<!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似乎想要一个doctype

代码语言:javascript
复制
<!doctype html>

。我不想更改现有站点的doctype,但看起来我也不能计算母版页模板的doctype字段中的宏。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-07 01:54:20

在添加HTML lang属性以支持WCAG 2.0指南时,也存在类似的问题。但是,HTML属性由系统文件PortalTemplate.aspx控制,该文件使用Kentico页面的XmlNamespace属性。为了解决这个问题,我们在母版页的布局属性中添加了服务器端代码。但是,也可以在添加到母版页的web部件中执行此操作。然后,您可以根据所选择的条件更改页面的XmlNamespace属性,而不是更改页面的DocType属性。这能满足你的需求吗?

代码语言:javascript
复制
<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>

麦克

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58719316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档