AMP

创建实时博客

实时博客是在持续进行的事件(如体育赛事或选举)期间频繁更新的网页。在 AMP 中,您可以使用 amp-live-list 组件来实现实时博客。

本教程简要概述了 amp-live-list 组件,并重点介绍了实时博客的一些实现细节,如分页深度链接。我们将使用 AMP By Example 的实时博客示例来说明如何在 AMP 中实现实时博客。

提示 – 使用 LiveBlogPosting 元数据标记,以便您的博客可以与第三方平台功能集成。

amp-live-list 概述

amp-live-list 组件会定期轮询宿主文档以获取新内容,并在新项目可用时更新用户的浏览器。这意味着每次需要添加新的博客文章时,CMS 都应该更新宿主文档,以便在页面的正文和元数据部分中包含更新。

这是博客的初始代码可能的样子

<amp-live-list id="my-live-list"
    data-poll-interval="15000"
    data-max-items-per-page="5">
  <button update on="tap:my-live-list.update">You have updates</button>
  <div items></div>
</amp-live-list>

让我们看看这段代码

每个 amp-live-list 组件都需要一个唯一的 id,因为一个页面上可能有多个组件。在本例中,我们将 my-live-list 指定为唯一 id。

data-poll-interval 属性指定轮询发生的频率;如果宿主文档已更新,则该更新应在下一个时间间隔后可供用户使用。

每次向宿主文档添加新项目时,<button update on="tap:my-live-list.update"> 元素都会显示一个“您有更新”按钮,单击该按钮会触发页面显示最新帖子。

实时博客可能会增长并使页面过长。您可以使用 data-max-items-per-page 属性来指定可以添加到实时博客的项目数。如果更新后的项目数超过 data-max-items-per-page,则会删除超过此数量的最旧更新。例如,如果页面当前有 9 个项目,并且 data-max-items-per-page 设置为 10,并且最新更新中有 3 个新项目到达,则会从页面中删除两个最旧的项目,并显示最新更新。

amp-live-list 中的所有博客文章都必须是 <div items></div> 的子级。通过将每个帖子称为项目,每个项目都必须有一个唯一的 id 和一个 data-sort-time

实现细节

现在您已经熟悉了 amp-live-list 组件,让我们弄清楚如何实现更复杂的实时博客。请继续阅读,了解有关如何实现分页以及深度链接如何工作的更多信息。

分页

长博客可以使用分页来提高性能,方法是限制页面上要显示的博客项目数。要实现分页,请在 amp-live-list 组件中添加 <div pagination></div>,然后插入您需要的任何分页标记(例如,页码或指向下一页和上一页的链接)。

使用分页,我们之前使用的简单代码变为

<amp-live-list id="my-live-list"
    data-poll-interval="15000"
    data-max-items-per-page="5">
  <button update on="tap:my-live-list.update">You have updates</button>
  <div items></div>
  <div pagination>
    <nav>
      <ul>
        <li>1</li>
        <li>Next</li>
      </ul>
     </nav>
   </div>
</amp-live-list>

您有责任通过更新托管页面来正确填充导航项。例如,在 实时博客示例中,我们通过服务器端模板呈现页面,并使用查询参数来指定页面上的第一个博客项目应该是什么。我们将页面的大小限制为 5 个项目,因此如果服务器生成了超过 5 个项目,则访问主页的用户将在导航区域中看到“下一步”元素。有关详细信息,请参阅 amp-live-list

在博客文章的大小超过 data-max-items-per-page 指定的最大项目数后,较旧的博客项目将显示在“下一页”中,例如在第 2 页上。鉴于 amp-live-list 会定期轮询服务器以查看项目是否有任何变化,因此如果用户不在第一页上,则无需轮询服务器。

您可以将 disabled 属性添加到托管页面以防止轮询机制。在实时博客示例中,我们在服务器端模板中执行此行为;当请求的页面不是第一页时,我们会将 disabled 属性添加到 amp-live-list 组件。

深度链接

当您发布博客文章时,能够深度链接到该帖子以启用共享等功能非常重要。借助 amp-live-list,只需使用博客项目的 id 即可实现深度链接。例如,https://amp.org.cn/documentation/examples/news-publishing/live_blog/preview/index.html#post3 允许您直接导航到 id 为 post3 的博客文章。

AMP By Example 在 实时博客示例中使用 Cookie 来生成新内容,因此如果您是第一次访问该页面,则 id 为“post3”的帖子可能不可用,在这种情况下,您将被重定向到第一篇帖子。

资源

从以下资源了解更多信息