页面属性
某些 AsciiDoc 文档属性为 Antora 页面提供元数据或控制 Antora 如何处理页面。我们将这些称为页面属性。页面属性有三种类型:自定义、预定义和内在属性。本页解释了每种类型的页面属性的用途,如何重新定义它们,以及如何使用 UI 模型从 UI 模板访问它们。
目的及解剖
页面属性都是关于提供元数据的,无论该元数据是用于 Antora 本身、UI模板、用户还是用于搜索索引。通过定义页面属性,您可以存储关于页面的其它信息,然后可以在整个站点中访问和使用这些信息。
页面属性的定义与任何其它 AsciiDoc 文档属性一样,通常使用文档头中的属性条目。页面属性的不同之处在于属性的名称必须以 page-
开头(例如,page-category
)。page-
前缀的存在允许 Antora 将其识别为页面属性。
- TIP
-
如果您想知道是否需要添加
page-
前缀,请询问自己是否需要从UI
模板访问该属性。如果答案是肯定的,那么就需要前缀。否则,不需要前缀。
下面是一个定义了两个页面属性的页面示例:
= Page Title
:page-category: DevOps
:page-edition: Enterprise
Main content.
page-
前缀旨在向 Antora 和作者提供一个提示,告诉他们哪些属性构成了页面的元数据。通过对 page-
前缀 进行标准化,Antora 能够将页面属性从 AsciiDoc 中或由 AsciiDoc 处理器定义的众多内置和固有属性中分离出来。前缀还将页面属性与用于在页面或站点中存储可重用内容的内部属性(也称为自定义内容属性)隔离开来。
定义一个自定义页面属性
要定义页面属性,您可以在页面标头中添加一个属性条目,并以 page-
开始名称。在头文件中定义属性条目是很重要的。否则,将找不到 page
属性。
下面是定义页面属性的属性条目示例:
= Page Title
:page-name-goes-here: value goes here
这个页面属性的名称是 name-goes-here
( page-
前缀加上自定义名称 name-goes-here
)。它的值 value goes here
。
页面属性的名称必须遵守文档属性的 命名规则。该值可以为空,也可以为字符串值。如果该值不为空,则必须与结束冒号( :
)至少偏移一个空格。
配置预定义的页面属性
一些页面属性在 Antora 中得到特殊处理。这些页面属性具有保留的名称,但接受用户定义的值,以便将有关页面的信息传递给 Antora 。示例包括 page-aliases
, page-layout
, 和 page-partial
。
页面别名( page-aliases
)属性允许您为当前页面配置备用资源 id 。例如,要声明页面的旧名称,您可以使用:
= Page Title
:page-aliases: old-page-name.adoc
与自定义页面属性不同,页面别名(page-aliases)属性要求值符合特定的语法(即,以逗号分隔的资源 id 列表)。请参阅 页面别名,了解页面别名(page-aliases)属性,以及如何使用它来保留对已重命名、移动或删除的页面的引用。
page-layout
属性允许您指定将哪个 UI
模板应用到当前页面。例如,要将主(home)布局应用于当前页面,可以使用:
= Home Page
:page-layout: home
请参阅 页面布局,了解 page-layout
属性以及如何使用它来定义应用于页面的 UI
布局。
将来可能会添加其他预定义的页面属性,以允许配置类似的功能。
从UI模板访问页面属性
页面属性的主要作用之一是通过 UI
模型将关于页面的元数据传递给 UI
模板。 UI
模板可以以各种方式使用页面属性提供的信息,从在发布的页面中填充元数据到在 UI
中切换或配置行为。
例如,默认 UI
允许您使用名为 toclevels
的页面属性来配置侧边栏 TOC
的深度(即定义时的页面 toclevels
)。例如:
= Page Title
:page-toclevels: 3
你也可以在剧本中设置这个属性(添加一个后缀的 @
,这样它仍然可以在每页被覆盖):
asciidoc:
attributes:
page-toclevels: 3@
在 UI
模型中可以通过页面访问 page.attributes
的属性。此属性的值是属性的映射。
例如,要访问 UI
模板中名为 toclevels
的页面属性,可以使用:
{{page.attributes.toclevels}}
那么 page-
前缀去了哪里?
当页面属性被提升到 UI
模型时,page-
前缀将被删除。这就是为什么我们说页面属性的名称为 toclevels
而不是 page-toclevels
。页面前缀只是一个命名空间,用于将其标识为页面属性。因此,页面属性命名为 page-toclevels
在 UI
模型中变为 toclevels
(例如,page.attributes.toclevels
)。
属性名称上的 page-
前缀是将其提升到 UI
模型的原因。所有其它文档属性都对 UI
模型有效地隐藏起来。
内置页面属性
Antora 在运行时自动设置一些只读的、固有的页面属性,这些属性来源于关于当前页面的现有元数据。例如,当前组件的名称可以从 page-component-name
属性中读取。
内置页面属性在 内置属性 中列出。这些属性是只读的,因此不应该在页头中重写它们的值。