您的样本article.amp.html
页面应该如下:
Copy <!doctype html>
<html ⚡ lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<link rel="canonical" href="/article.html">
<link rel="shortcut icon" href="amp_favicon.png">
<title>News Article</title>
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
<style amp-custom>
body {
width: auto;
margin: 0;
padding: 0;
}
header {
background: Tomato;
color: white;
font-size: 2em;
text-align: center;
}
h1 {
margin: 0;
padding: 0.5em;
background: white;
box-shadow: 0px 3px 5px grey;
}
p {
padding: 0.5em;
margin: 0.5em;
}
</style>
<script async src="https://cdn.ampproject.org/v0.js"></script>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "NewsArticle",
"mainEntityOfPage":{
"@type":"WebPage",
"@id":"https://example.com/my-article.html"
},
"headline": "My First AMP Article",
"image": {
"@type": "ImageObject",
"url": "https://example.com/article_thumbnail1.jpg",
"height": 800,
"width": 800
},
"datePublished": "2015-02-05T08:00:00+08:00",
"dateModified": "2015-02-05T09:20:00+08:00",
"author": {
"@type": "Person",
"name": "John Doe"
},
"publisher": {
"@type": "Organization",
"name": "⚡ AMP Times",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/amptimes_logo.jpg",
"width": 600,
"height": 60
}
},
"description": "My first experience in an AMPlified world"
}
</script>
</head>
<body>
<header>
News Site
</header>
<article>
<h1>Article Name</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam egestas tortor sapien, non tristique ligula accumsan eu.</p>
<amp-img src="mountains.jpg" layout="responsive" width="266" height="150"></amp-img>
</article>
</body>
</html>
以上是一个简单的页面,这个页面最有趣的事实是它通过AMP验证和Schema.org搜索引擎元数据验证。如果这个网页部署在新闻网站上,那么它将有资格被纳入专门针对AMP内容的新Google搜索转盘中,因此这是我们工作的一个很好的起点。
在我们更改页面之前,让我们开启Chrome开发者工具。当在网站上工作时(尤其是移动网站),在浏览器中测试时模拟移动体验通常是一个好主意。首先,您可以通过菜单
>更多工具
>开发人员工具
在Chrome中打开开发者控制台:
请检查开发者控制台中的JavaScript输出。确保您选择了“控制台”选项卡:
现在点击开发者控制台中的设备模拟按钮。它的图标是一个电话和平板电脑:
在出现的菜单中,将设备设置为“Nexus 5X”:
现在我们可以开始在页面上工作。我们来试试添加 一个广告到我们的AMP文章!
AMP中的所有广告均使用amp-ad
组件构建。使用此组件,我们可以通过多种方式配置我们的广告,例如宽度,高度和布局模式。不过,许多广告平台需要额外的配置,例如广告网络的帐户ID,应该投放哪个广告或用于定位广告的选项。对于amp-ad
,我们只需填写HTML属性所需的各种选项。
看一下双击广告 的这个例子:
Copy <amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/image/static">
</amp-ad>
你可以看到这是一个非常简单的配置。注意type属性,此属性通知您要使用哪个广告平台的amp-ad组件。在这种情况下,我们需要双击平台 ,因此类型值是doubleclick
。
data-slot属性更加独特。在amp-ad中以data-开头的任何属性都是供应商特定的属性。这意味着并不是所有的供应商都必须要求这个特定的属性,如果它被提供,它们也不一定会有反应。例如,将上述双击示例与A9平台的测试广告进行比较:
Copy <amp-ad
width="300"
height="250"
type="a9"
data-aax_size="300x250"
data-aax_pubname="test123"
data-aax_src="302">
</amp-ad>
尝试将上述两个示例添加到<header>
标签之后的文章中。刷新页面,您应该会看到出现两个测试广告:
重要提示:您的开发人员控制台可能会出现一些错误,例如“混合内容”或“无法加载XMLHttpRequest”。前者可能与A9广告有关,因为并不是所有的内容都是安全的。对于AMP上投放的所有广告来说,这是一个明显的要求。
让我们来探索一些可以使用双击的选项。尝试将这两个地理位置定位广告配置添加到您的页面:
Copy <amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/geo/uk">
<div fallback>No ad appeared because you're not browsing from the UK!</div>
</amp-ad>
<amp-ad
width="300"
height="250"
type="doubleclick"
data-slot="/35096353/amptesting/geo/us">
<div fallback>No ad appeared because you're not browsing from the US!</div>
</amp-ad>
不幸的是,不能从页面本身的代码来控制地理位置定位。但是,这些测试广告已经在“双击”信息中心中配置,仅在特定国家(特别是英国和美国)展示。
刷新 页面并查看。以下屏幕截图是从澳大利亚捕获的,所以广告都不会加载:
上述地理位置定位示例演示了amp-ad对于各种广告平台功能的灵活性。
注意:您可能会注意到,这些amp广告代码中有额外的div标签,其中有一个名为fallback的属性。你能猜测fallback属性是什么意思?当父元素无法成功加载时,它通知AMP的加载系统仅显示该元素的内容。意思是父元素落在子元素上 - 因此术语为“回退”。
译者(位于中国)测试时amp-ad并未成功加载显示,原因可能为网络问题。
Copy Failed to load resource:amp-ad-0.1.js net::ERR_CONNECTION_TIMED_OUT
以下是当前支持的广告网络:
有关最新支持的广告平台的信息,请务必查看AMP广告组件的文档页面。
在下一章中,我们将探讨更先进的AMP组件以及如何将它们纳入AMP文档。
注意:没有广告网络允许JavaScript在AMP文档中运行。相反,AMP运行时将来自不同来源的iframe(通过iframe沙箱)作为AMP文档加载,并在该iframe沙箱内执行广告网络的JS。
重要提示:amp-ad的规范可能会随着时间的推移而显着演变。目前的方法旨在引导格式以展示广告。