可用的 Liquid 对象

Liquid 对象包含将动态内容输出到页面的属性。 例如,page 对象有一个称为 title 的属性,可用于输出当前页面的标题。

若要按名称访问对象属性,请使用句点 (.)。 要呈现模板中的对象的属性,请使用 {{ and }} 括住它。

重要提示

为了避免可能的跨网站脚本 (XSS) 问题,每次使用 Liquid 对象读取由用户提供的不受信任的数据时,请始终使用转义筛选器对数据进行 HTML 编码。

{{ page.title }}

也可以使用字符串名称加 [] 访问对象的属性。 此格式在动态确定所需属性或属性名称包含字符、空格、特殊字符等情况下很有用,在这些情况下,在语法中使用句点 (.) 将导致无效。

{{ page[title] }}

{% assign attribute_name = Name with spaces %}

{{ object[attribute_name] }}

下列对象可以任何位置在所有模板中使用和访问。

Object 说明
实体 允许您按 ID 加载任何 Microsoft Dataverse 表。 详细信息:实体
现在 在模板呈现时,将引用当前 UTC 时间的日期/时间对象。
注释:此值由门户 Web 应用缓存,不会每次刷新。 详细信息:日期筛选器
页面 引用当前门户请求页面。 page 对象提供对类似于当前页面的导航痕迹、当前页面的标题或 URL、基础 Dataverse 记录的任何其他属性或相关实体等内容的访问。 详细信息:页面
参数 请求参数的便捷快捷方式。 详细信息:请求
请求 包含有关当前 HTTP 请求的信息。 详细信息:请求
设置 允许您按名称加载任何网站设置。 详细信息:设置
站点地图 允许访问门户站点地图。 详细信息:站点地图
网站标记 允许您按名称加载任何网站标记。 详细信息:网站标记
片段 允许您按名称加载任何内容片段。 详细信息:片段
用户 引用当前门户用户,允许对基础 Dataverse 联系人记录的所有属性的访问。 如果没有用户登录,此变量将为 null。 详细信息:用户
Web 链接 允许您按名称或 ID 加载任何 Web 链接集。 详细信息:Web 链接
网站 请参阅门户的 Website 记录,这样就可以访问门户的 Dataverse Website (adx_website) 记录的所有属性。 详细信息:网站

广告

提供访问和呈现广告的功能。

ads 对象允许您选择特定的广告或广告位置:

<div>

{% assign ad = ads[Ad Name] %}

<h4>{{ ad.title }}</h4>

<a href={{ ad.redirect_url }}>

<img src={{ ad.image.url }} alt={{ ad.image.alternate_text }} />

</a>

</div>

Ads 属性

属性 说明
placements 返回 adplacements 对象。
[ad 名称或 id] 可以按其名称或属性访问广告。
{% assign ad = ads[Ad Name] %}
{% assign ad = ads["da8b8a92-2ee6-476f-8a21-782b047ff460"] %}

广告位置属性

属性 说明
[ad 占位名称或 id] 可以按其名称或 ID 属性访问任何 adplacement。
{% assign placement = ads.placements[Placement Name or Id] %}
{% assign placement = ads.placements[2423d713-abb3-44c3-8a7d-c445e16fccad] %}

广告位置属性

广告展示位置是一个表对象,此对象具有相同的常规属性以及下列属性。

属性 描述
广告 返回与位置关联的广告对象集合。 迭代标记数组筛选器可以与此集合一起使用。
客户 返回广告位置的名称字段。
placement_url 可用于检索由模板完全呈现的广告位置的 URL。
random_url 可用于从由模板完全呈现的位置检索随机广告的 URL。

广告属性

备注

广告是一个表对象,具有所有相同属性,除了下面列出的属性之外。

属性 说明
ad_url 可用于检索由模板完全呈现的广告的 URL。
副本 返回广告的副本字段。
图像 返回广告的图像对象(如果有)。
客户 返回广告的名称字段。
open_in_new_window 如果 redirect_url 指定的 URL 应该在新窗口中打开,则返回 true。
redirect_url 通过选择广告将把用户重定向到的 URL。

广告图像属性

属性 说明
alternate_text 返回将显示在标记的 alt 属性中的文本。
height 返回图像的高度(像素)
URL 返回图像的 URL 源。
width 返回图像的宽度(像素)

博客

提供访问和呈现博客和博客文章的功能。

blogs 对象允许您选择特定的博客或博客文章。

{% assign posts = blogs.posts | paginate: 0,4 %}

<div class=content-panel panel panel-default>

<div class=panel-heading>

{% assign sitemarker = sitemarkers["Blog Home"] %}

{% assign snippet = snippets[Home Blog Activity Heading] %}

<a class=pull-right href={{sitemarker.url}}> All Blogs </a>

<h4>

<a class=feed-icon fa fa-rss-square href={{ blogs.feedpath }} />

{{ snippet.adx_value }}

</h4>

</div>

<ul class=list-group>

{% for post in posts.all %}

<li class=list-group-item >

<a class=user-avatar href={{ post.author_url }}>

<img src={{ post.user_image_url }} />

</a>

<h4 class=list-group-item-heading>

<a href={{ post.app_relative_path }}>{{ post.title }}</a>

</h4>

<div class=content-metadata>

<abbr class=timeago>{{ post.publish_date }}</abbr>

&ndash;

<a href={{ post.author_url }}> {{ post.author_name }} </a>

&ndash;

<a href={{ post.application_path }}#comments>

<span class=fa fa-comment aria-hidden=true></span> {{ post.comment_count }}

</a>

</div>

</li>

{% endfor %}

</ul>

</div>

blogs 对象

博客对象允许您访问门户中的所有特定博客,或访问门户中的所有博客文章。

下表说明与 blogs 对象关联的属性。

属性 说明
公告 返回包含门户中所有博客文章的 blogposts 对象。
[博客名称或 id] 可以按其名称或 ID 属性访问任何博客。
{% assign blog = blogs["Blog Name"] %}                             

{% assign blog = blogs["da8b8a92-2ee6-476f-8a21-782b047ff460"] %}  |

blog 对象

blog 对象允许您处理单个博客,使您可以访问该博客的文章。

下表说明与 blog 对象关联的各个属性。

属性 说明
公告 返回包含博客的所有博客文章的 blogposts 对象。
客户 博客的名称。
title 博客的标题。
URL 博客的 URL。

blogposts 对象

blogposts 对象允许您访问博客文章对象的集合。 您可以预订博客文章,并使用 Liquid 筛选器实现分页:

{% assign blogposts = blogs.posts | order\_by “adx\_name”, “desc” | paginate: 0,4 | all %}

其他可能的选项:

  • blogs.posts.all(获取所有博客文章)
  • blogs.posts | from\_index: 0 | take: 2

下表说明与 blogposts 对象关联的各个属性。

属性 说明
所有 返回集合中的所有 blogposts 对象

blogpost 对象

引用单个博客文章。

下表说明与 blogpost 对象关联的各个属性。

属性 描述
url 博客的 URL。
内容 返回博客的内容字段。
作者 返回文章的作者(即联系人表对象)。
职务 博客的标题。
comment_count 返回指定博客评论数量计数的整数值。
publish_date 博客发布的日期。

实体

注意

为避免潜在的跨站脚本 (XSS) 问题,无论何时使用实体 Liquid 对象读取不可信用户提供的数据,请始终使用转义筛选器对字符串数据进行 HTML 编码。

备注

Dataverse 的一些命名约定已经改变,例如,Dataverse 实体现在称为。 名称更改不适用于 Liquid 对象。 Liquid 实体对象将继续称为实体

允许您按 ID 加载任何 Dataverse 表。 如果表存在,表对象将返回。 如果具有指定 ID 的表未找到,null 将返回。

{% assign account = entities.account['936DA01F-9ABD-4d9d-80C7-02AF85C822A8'] %}

{% if account %}

{{ account.name | escape }} ({{ account.statecode.label | escape }})

{% endif %}

{% assign entity_logical_name = 'contact' %}

{% assign contact = entities[entity_logical_name][request.params.contactid] %}

{% if contact %}

{{ contact.fullname | escape }} ({{ contact.parentcustomerid.name | escape }})

{% endif %}

Entity

实体对象提供对 Dataverse 表记录的属性的访问。

属性 描述
编号 表的 GUID ID,作为字符串。 例如,936DA01F-9ABD-4d9d-80C7-02AF85C822A8
logical_name 表的 Dataverse 逻辑名称。
注释 加载与表关联的任何注释(批注),顺序从旧到新 (createdon)。 注意作为注释对象返回。
权限 加载表的表权限声明结果。 结果作为权限对象返回。
url 返回表的 Power Pages 内容管理系统 URL 路径。 如果表在当前网站没有有效的 URL,返回 null。 通常,这将只返回已集成到门户 CMS 的某些表类型的值 ,除非您在您的应用程序中自定义了 URL 提供程序。
[属性或关系名称] 您可以按逻辑名称访问 Dataverse 表的任何属性。 {{ entity.createdon }}{% assign attribute_name = 'name' %}{{ entity[attribute_name] }}
大多数表属性值直接映射到 Liquid 类型:“两个选项”字段映射到布尔值,文本字段到字符串,数字/货币字段到数字,日期/时间字段到日期对象。 但是,某些属性类型作为对象返回:
  • 查找(关联表引用)字段作为关联表引用对象返回。
  • 选项集/选择列表字段作为选项集值对象返回。
  • 您还可以通过关系架构名称来加载所有相关实体。
  • {{ page.adx_webpage_entitylist.adx_name }}如果关系为反身关系(即可自引用),则返回反身关系对象。 (否则,结果是模糊的。){{ page.adx_webpage_webpage.referencing.adx_name }}
    注意:加载大量相关实体或访问大量一个模板中的关系,可能会对模板呈现性能产生负面影响。 避免加载数组中、循环内每个项目的相关实体。 如有可能,使用 Dataverse 表标记加载实体的集合。

关联的表引用

查找属性值作为关联表引用对象返回,具有以下属性。

属性 描述
编号 引用表的 GUID ID,作为字符串。
例如,936DA01F-9ABD-4d9d-80C7-02AF85C822A8
logical_name 引用表的 Dataverse 逻辑名称。
客户 引用表的主名称属性。

备注

注释是提供对注释记录的属性和关系的访问的表对象。 除了表对象的所有属性外,注释还具有以下额外的属性。

属性 说明
documentbody 加载注释记录的 documentbody 属性,作为 Base64 编码的字符串。 由于此属性的内容可能很大,因此不加载注释属性的其余部分,仅按需加载。
注意:使用 documentbody 属性可能对模板呈现性能产生负面影响,应小心执行。
尽可能使用 url 属性提供注释附件的链接。
URL 返回内置门户批注附件处理程序的 URL 路径。 如果用户具有权限,且注释已附加文件,此 URL 的请求将下载注释文件附件。

选项集值

选项集/选择列表属性值作为关联表引用对象返回,具有以下属性。

属性 说明
标签 选项集/选择列表属性值的本地化标签。 例如,Active
选项集/选择列表属性值的整数值。 例如,0

表权限

表权限对象提供对表的聚合权限声明结果的访问。

属性 说明
can_append 如果当前用户具有将记录追加到该记录的关系的权限,返回 true。 否则,返回 false。
can_append_to 如果当前用户具有将此记录追加到另一个表的关系的权限,返回 true。 否则,返回 false。
can_create 如果当前用户具有创建此表类型的新记录的权限,返回 true。 否则,返回 false。
can_delete 如果当前用户具有删除该记录的权限,返回 true。 否则,返回 false。
can_read 如果当前用户具有阅读该记录的权限,返回 true。 否则,返回 false。
can_write 如果当前用户具有更新该记录的权限,返回 true。 否则,返回 false。
rules_exist 如果该对象表示的权限结果是显式定义的权限规则的结果,返回 true。 如果是缺少显式定义权限时的默认结果,返回 false。

反身关系

尝试加载实体中的反身(即自引用关系)关系作为具有以下属性的对象返回。

属性 说明
is_reflexive 返回 true。 可以用于测试关系返回的对象是否是反身关系对象。
referenced 返回指定关系的引用实体的数组。
referencing 返回指定关系的引用表。 如果引用表不存在,返回 null。 如果关系为多对多 (N:N),返回引用实体的数组。

entitylist

entitylist 对象在 Dataverse 表标记内使用。 它可以提供对特定列表所有属性的访问。

属性

备注

实体

属性 说明
create_enabled 如果为列表配置了新记录创建,将返回 true。 否则,返回 false。
create_url 为列表的创建链接/按钮返回已配置的 URL 路径。
detail_enabled 如果为列表配置了单个记录的详细信息视图,将返回 true。 否则,返回 false。
detail_id_parameter 构造记录详细信息视图 URL 时,将返回用于记录 ID 的查询字符串参数名称。 有关使用 Liquid 筛选器构造 URL 的详细信息,请参阅 URL 筛选器。 例如,id
detail_label 为列表的详细信息视图链接/按钮返回已配置的本地化标签。
detail_url 为列表的详细信息视图链接/按钮返回已配置的 URL 路径。
empty_list_text 当列表视图未返回结果时,返回要显示的已配置本地化文本。
enable_entity_permissions 如果已为此列表启用表权限筛选,将返回 true。 否则,返回 false。
entity_logical_name 返回此列表显示的记录的 Dataverse 表逻辑名称。 例如,contact
filter_account_attribute_name 返回用于查找客户的属性逻辑名称,该名称将用于按当前门户用户的上级单位来筛选结果记录。 例如,accountid
filter_apply_label 返回将高级属性筛选器应用到列表结果所用的链接/按钮的已配置本地化标签。
筛选器定义 返回列表的 JSON 属性筛选器定义。 有关如何使用 metafilters Liquid 筛选器处理此定义的详细信息,请参阅列表筛选器
filter_enabled 如果为列表启用了高级属性筛选,将返回 true。 否则,返回 false。
filter_portal_user_attribute_name 返回用于查找联系人的属性逻辑名称,该名称将用于按当前门户用户的联系人来筛选结果记录。 例如,contactid
filter_website_attribute_name 返回对 adx_website 的查找的属性逻辑名,当前门户网站将使用该属性逻辑名筛选结果记录。 例如,adx_websiteid
language_code 返回用于选择此列表的所有本地化标签的 Dataverse 整数语言代码。
page_size 返回列表的已配置结果页面大小。
primary_key_name 返回此列表显示的记录的主键属性逻辑名称。
search_enabled 如果已为此列表启用搜索,将返回 true。 否则,返回 false。
search_placeholder 返回列表搜索字段占位符的已配置本地化文本。
search_tooltip 返回列表搜索工具提示的已配置本地化文本。
视图 以列表视图对象的形式返回列表的可用视图。
[属性逻辑名] 可按照与 table 对象相同的方式,按逻辑名访问 list (adx_entitylist) Dataverse 记录的任何属性。 例如,{{ entitylist.adx_name }}

列表视图属性

属性 说明
以列表视图列对象的形式返回视图列。
entity_logical_name 返回视图中包含的记录的 Dataverse 表逻辑名称。 例如,contact
Id 返回视图的 GUID ID。
language_code 返回用于选择视图的所有本地化标签(列标题等)的 Dataverse 整数语言代码。
客户 返回视图的 Dataverse 显示名称。
primary_key_logical_name 返回视图中包含的记录的 Dataverse 表主键逻辑名称。 例如,contactid
sort_expression 返回视图的默认排序表达式。 例如,name ASC、createdon DESC

列表视图列属性

属性 说明
attribute_type 以字符串形式返回列的 Dataverse 属性类型名称。 例如,Lookup、Picklist、String、Boolean、DateTime
logical_name 返回列的 Dataverse 属性逻辑名称。 例如,createdon
姓名 返回列的本地化 Dataverse 显示名称。 例如,Created On
sort_ascending 返回用于按升序将列排序的排序表达式字符串。 例如,createdon ASC
sort_descending 返回用于按降序将列排序的排序表达式字符串。 例如,createdon DESC
sort_disabled 如果禁用列的排序,将返回 true。 否则,返回 false。
sort_enabled 如果启用列的排序,将返回 true。 否则,返回 false。
width 以像素形式返回列的已配置宽度。

entityview

entityview 对象在 entityview 标记中使用,为视图以及视图结果记录提供对元数据的访问。

属性

属性 描述
表视图列对象的形式返回视图列。
entity_permission_denied 如果对视图结果的访问由于当前用户的表权限不足被拒绝,返回 true。 如果授予对视图结果的阅读访问权限,返回 false。
entity_logical_name 视图结果记录的 Dataverse 表逻辑名称。 例如,contact
first_page 视图结果第一页的页码。 这将为 1,除非不返回结果,这种情况下它将是 null。
编号 定义此 entityview 的 Dataverse 视图的 GUID ID。
language_code 用于加载当前视图的本地化标签的 Dataverse 整数语言代码。
last_page 视图结果最后一页的页码。 如果未返回结果,则将为 null。
名称 用于定义此 entityview 的 Dataverse 视图名称,如“有效联系人”。
next_page 视图结果下一页的页码。 如果结果没有下一页面,这将为 null。
视图结果当前页面的页码。
页面 返回包含当前视图的所有结果页面的页码数组。
page_size 当前视图每个页面返回的结果的数量。
previous_page 视图结果下一页的页码。 如果结果没有上一页面,这将为 null。
primary_key_logical_name 此视图的结果表的主键属性的 Dataverse 逻辑名称。 例如,contactid。
记录 视图的结果记录的当前页面,作为表对象。
sort_expression 视图的默认排序表达式。 例如,nameASC、createdon DESC。
total_pages 视图的结果页面的总数。
total_records 视图的结果总数(所有页面)。

事件

提供访问和呈现事件的功能。 events 对象允许您选择特定的事件或所有事件。

events 对象

events 对象允许您访问门户中的所有特定事件,或访问门户中的所有事件(无论哪个事件)。

events 对象拥有以下属性:

属性 描述
occurences 返回包含门户中所有事件发生的 eventoccurancess 对象
[事件名称或 id] 可以按其名称或 ID 属性访问任何事件。
{% assign event = events["Event Name"] %}
{% assign event = events["da8b8a92-2ee6-476f-8a21-782b047ff460"] %}

event 对象

event 对象允许您处理单个事件,使您可以访问该事件的计划和发生。

event 对象拥有以下属性:

属性 描述
发生次数 返回包含事件的所有发生的 eventoccurrences 对象。
名称 事件的名称。
URL 事件的 URL。

eventoccurences 对象

eventoccurrences 对象允许您访问事件发生对象的集合。 您可以对事件发生排序并指定用于检索的发生的日期范围,还可以使用 Liquid 筛选器实现分页

{% assign occurances = event.occurrences.from[today].to[advance_date] %}

请注意

{% assign occurances = event.occurrences.min[today].max[advance_date] %}

也有可能。

以下属性与 eventoccurrences 对象关联

属性 说明
所有 返回集合中的所有 eventoccurance 对象。

eventoccurence 对象

表示单个事件发生。 以下给出关联的属性:

属性 说明
url 发生的 URL。
is_all_day_event 这是全天事件吗?
start_time 事件的开始时间。
end_time 事件的结束时间。

forloop

包含在 for 循环块中有用的属性。

备注

forloop 只能在 for 标记中使用。

代码

{% for child in page.children %}

{% if forloop.first %}

This is the first child page!

{% else %}

This is child page number {{ forloop.index }}.

{% endif %}

{% endfor %}

输出

This is the first child page!

This is child page number 2.

This is child page number 3.

属性

属性 说明
第一 如果是循环的第一个迭代,返回 true。 如果不是第一个迭代,返回 false。
索引 当前项目在集合中的位置,其中第一个项目具有 1 位置。
index0 当前项目在集合中的位置,其中第一个项目具有 0 位置。
最后一页 如果是循环的最后一个迭代,返回 true。 如果不是最后一个迭代,返回 false。
length 返回循环ߝ的迭代数量,即迭代的集合中项目的数量。
rindex 循环中其余项目的数量 (长度 - 索引),其中 1 是最后项目的索引。
rindex0 循环中其余项目的数量 (长度 - 索引),其中 0 是最后项目的索引。

论坛

提供访问和呈现论坛和论坛执行绪的功能。 使用 Liquid 呈现论坛数据的功能已扩展到公告,但若要创建新的公告或执行绪,您必须使用已内置前述功能的 ASP.NET 多步窗体页面模板(例如,默认论坛执行绪和论坛公告页面模板)。

论坛对象允许您选择论坛或论坛执行绪:

<div class=content-panel panel panel-default>

<div class=panel-heading>

<h4>

<span class=fa fa-comments aria-hidden=true></span>

{{ snippets[Home Forum Activity Heading] | default: Forum Activity | h }}

</h4>

</div>

{% for forum in website.forums %}

<ul class=list-group>

<li class=list-group-item>

<div class=row>

<div class=col-sm-6>

<h4 class=list-group-item-heading><a href="{{ forum.url | h }}"> {{ forum.name | h }}</a></h4>

<div class=list-group-item-text content-metadata>{{ forum.adx_description | h }}</div>

</div>

<div class=col-sm-3 content-metadata>{{ forum.thread_count }} threads</div>

<div class=col-sm-3 content-metadata>{{ forum.post_count }} posts</div>

</div>

</li>

</ul>

{% endfor %}

</div>

论坛对象

论坛对象允许您访问门户中的所有特定论坛,或访问门户中的所有论坛执行绪(无论哪个论坛)。

forum 对象允许您处理单个论坛,使您可以访问该论坛的执行绪。

forumthreads 对象允许您访问 forumthread 对象的集合。 使用 liquid 筛选器,您可对论坛执行绪进行排序并实现分页。

{% assign threads = forum.threads | order_by adx_name, desc | paginate: 0,4 | all %}

单个论坛执行绪

forumposts 对象允许您访问 forumpost 对象的集合。

属性

属性 说明
threads 返回包含门户中所有 forumthread 对象的 forumthreads 对象。
所有 返回门户中的所有 forum 对象。 注意,website.forums 也是对等项。
thread_count 返回整个网站中执行绪数量计数的整数值。
post_count 返回门户中的文章总数的整数值。
[论坛名称或 id] 可以按其名称或 ID 属性访问任何论坛。
`{% assign forum = forums[Forum Name] %}
{% assign forum = forums[da8b8a92-2ee6-476f-8a21-782b047ff460] %}

forum 对象

属性

备注

实体

属性 说明
threads 返回包含论坛的所有论坛执行绪的 forumthreads 对象。
客户 论坛的名称。
thread_count 返回论坛中执行绪数量计数的整数值。
post_count 返回整个论坛中公告数量计数总和的整数值。

forumthreads 对象

属性

属性 说明
所有 返回集合中的所有 forumthread 对象。

forumthread 对象

属性

备注

实体

属性 说明
公告 返回包含执行绪的所有论坛公告的 forumposts 对象。
author 返回执行绪的作者(即联系人表对象)。
latest_post 返回执行绪中的最新公告。
first_post 返回执行绪中的第一个公告。
post_count 返回执行绪中公告数量计数的整数值。
is_answered 是否应答执行绪?
is_sticky 执行绪是否为粘滞执行绪?

forumposts 对象

属性

属性 说明
所有 返回集合中的所有 forumthread 对象。

单个论坛公告

属性

备注

实体

属性 说明
作者 返回文章的作者(即联系人表对象)。
内容 公告的内容。
is_answer 此文章是否为执行绪的答案?

知识

提供对 Dataverse knowledgearticle 和用于在门户中呈现文章和类别的类别表记录的访问权限。

属性

属性 说明
文章 返回包含在门户中可用的 knowledgearticle 表记录的文章对象的文章对象。
类别 返回包含在门户中可用的类别表记录的类别对象的类别对象。

文章对象

文章对象允许您访问文章对象的集合。 通过使用 Liquid 筛选器,您可对文章进行排序并实现分页。

{% assign count = count | default: 3 %}
{% assign languagecode = website.selected_language.code %}
{% assign popular_articles = knowledge.articles | popular: count,languagecode  %}
{% if popular_articles %}
    <div class=list-group>
    {% for article in popular_articles %}
      <div class=list-group-item clearfix>
        <a class=title href={{ article.url | escape }}>{{ article.title | escape }}</a>
        <p class=description>{{ article.description | escape }}</p>
      </div>
    {% endfor %}
    </div>
{% endif %}

属性

属性 说明
常用 返回包含大多数视图的文章对象的集合。 {% assign popular_articles = knowledge.articles.popular %}
最近 返回包含最新修订日期的文章对象的集合。 {% assign recent_articles = knowledge.articles.recent %}
主要 返回包含最高评分的文章对象的集合。 {% assign top_articles = knowledge.articles.top %}

筛选器

以下筛选器可以接受页面大小和语言的可选参数。 第一个参数是要检索的数量或记录。 默认页面大小为 5。 第二个参数是要检索特定语言的文章的语言代码。 筛选器可与其他 Liquid 筛选器 结合使用。

{% assign page_size = 5 %}
{% assign language_code = website.selected_language.code %}
{% assign recent_articles = knowledge.articles | recent: page_size, language_code %}
属性 说明
常用 返回包含大多数视图的文章对象的集合。 {% assign popular_articles = knowledge.articles \| popular: 10, en-US %}
最近 返回包含最新修订日期的文章对象的集合。 {% assign recent_articles = knowledge.articles \| recent: 5 %}
主要 返回包含最高评分的文章对象的集合。 {% assign top_articles = knowledge.articles \| top: 3, en-US %}

类别对象

类别对象允许您访问类别对象的集合。 您可以通过使用 Liquid 筛选器对类别排序并实现分页。

{% assign category_url = sitemarkers['Category'].url %}
  {% assign count = count | default: 0 %}  
  {% assign categories = knowledge.categories | top_level: count %}
  {% if categories %}
    <div class=list-group unstyled>
    {% for category in categories %}
      <a href={{ category_url | add_query: 'id', category.categorynumber }} class=list-group-item>
        {{ category.title }}
      </a>
    {% endfor %}
    </div>
  {% endif %}

属性

属性 说明
最近 返回包含最新修订日期的类别对象的集合。
top_level 返回没有父类别的类别对象的集合。

筛选器

以下筛选器可以接受指示页面大小的可选参数。 默认页面大小为 5。 筛选器可与其他 Liquid 筛选器 结合使用。

{% assign page_size = 5 %}
{% assign recent_categories = knowledge.categories | recent: page_size %}
属性 说明
最近 返回包含最新修订日期的类别对象的集合。 您可以提供参数 {% assign recent_categories = knowledge.categories \| recent: 10 %}
top_level 返回没有父类别的类别对象的集合。 {% assign root_categories = knowledge.categories \| top_level %}

文章对象

文章对象允许您使用一个 knowledgearticle 在门户中显示该文章的详细信息。

属性

文章是一个实体 对象,除了下面列出的属性之外,还具有所有相同的属性。

属性 说明
article_public_number 文章的文章公共编号。
comment_count 指定文章的评论数量计数的整数值。
content 批准文章的内容
current_user_can_comment 返回一个指示当前用户是否可以对文章添加评论的布尔值。
is_rating_enabled 返回一个指示是否对文章启用评级的布尔值。
keywords 文章的关键字。
名称 文章标题的备选别名。
评级 文章的十进制评分值。
title 文章的标题。
view_count 文章浏览次数的整数值。

类别对象

类别对象允许您使用一个类别在门户中显示其详细信息。

属性

类别是一个实体 对象,除了下面列出的属性之外,还具有所有相同的属性。

属性 说明
categorynumber 类别的类别编号。
名称 类别标题的备选别名。
标题 类别的标题。

语言

提供当前语言名称,如果启用了多语言支持则提供语言代码。

属性

属性 描述
URL 前缀为当前语言代码的当前请求 URL。
url_substitution 前缀为当前语言代码、绕过页面输出缓存的当前请求 URL。
名称 当前语言的标题。
代码 语言的语言代码。

例如,语言下拉列表 Web 模板在多个语言可用时默认使用此 Liquid 对象列出可用语言。

页面

引用当前门户请求页面。 此对象合并站点地图和当前请求实体(通常是网页)的属性。

page 对象提供对类似于当前页面的导航痕迹、当前页面的标题或 URL、基础 Dataverse 记录的任何其他属性或相关实体等内容的访问。

<ul class=breadcrumb>

{% for crumb in page.breadcrumbs %}

<li><a href={{ crumb.url | escape }}>{{ crumb.title | escape }}</a></li>

{% endfor %}

<li class=active>{{ page.title | escape }}</li>

</ul>

<div class=page-header>

<h1>{{ page.title | escape }}</h1>

</div>

<div class=page-copy>

{{ page.adx_copy }}

</div>

<div class=list-group>

{% for child in page.children %}

<a class=list-group-item href={{ child.url | escape }}>

{{ child.title | escape }}

</a>

{% endfor %}

</div>

<!-- Page {{ page.id }} was last modified on {{ page.modifiedon }}. -->

页面属性

备注

实体

属性 说明
breadcrumbs 返回页面的导航痕迹站点地图节点对象,以站点地图根节点开头,以父项结尾。
children 返回页面的子站点地图节点对象。
上级 返回页面的父站点地图节点。 如果该页是主页,则父项将为 null。
职务 页面的标题。
url 页面的 URL。
[属性或关系名称] 您可以按逻辑名称访问页面的底层 Dataverse 记录的任何属性。
{{ page.createdon }}
{% assign attribute_name = 'name' %}
{{ page[attribute_name] }}
大多数表属性值直接映射到 Liquid 类型:“两个选项”字段映射到布尔值,文本字段到字符串,数字/货币字段到数字,日期/时间字段到日期对象。 但是,某些属性类型作为对象返回:
  • 查找(关联表引用)字段作为关联表引用对象返回。
  • 选项集/选择列表字段作为选项集值对象返回。
  • 您还可以通过关系架构名称来加载所有相关实体。
    {{ page.adx_webpage_entitylist.adx_name }}
    在关系是反身(即自引用)的情况中,将返回实体对象。 (否则,结果是模糊的。){{ page.adx_webpage_webpage.referencing.adx_name }}
    注意:加载大量相关实体或访问大量一个模板中的关系,可能会对模板呈现性能产生负面影响。 避免加载数组中、循环内每个项目的相关实体。 如果可以,首选使用 Dataverse 表标记加载实体集合。

轮询

提供访问和呈现轮询的功能。

polls 对象允许您选择特定的轮询或轮询位置:

<div>

{% assign poll = polls[Poll Name] %}

<h4>{{ poll.question }}</h4>

{% for option in poll.options %}

<div>

<input type=radio name={{ poll.name }} id={{ option.id }} />

<label for={{ option.id }}>{{ option.answer }}</label>

</div>

{% endfor %}

<button type=button>{{ poll.submit_button_label }}</button>

</div>

Polls 属性

属性 说明
placements 返回 pollplacements 对象。
[轮询名称或 id] 可以按其名称或 ID 属性访问任何轮询。 {% assign poll = polls[Poll Name] %}
{% assign poll = polls["41827a5c-33de-49b8-a0c7-439e6a02eb98"] %}

轮询位置属性

属性 说明
[轮询占位名称或 id] 可以按其名称或 ID 属性访问任何轮询位置。{% assign placement = polls.placements[Placement Name or Id] %}
{% assign placement = polls.placements[7677c5d4-406e-4b6c-907c-916ac17dba0f] %}

轮询位置属性

备注

实体

属性 说明
客户 返回轮询位置的名称字段。
placement_url 可用于检索由模板完全呈现的轮询位置的 URL。
轮询 返回与位置关联的轮询对象集合。 迭代标记数组筛选器可以与此集合一起使用。
random_url 可用于从由模板完全呈现的位置检索随机轮询的 URL。
submit_url 向其提交已完成轮询的 URL。

轮询属性

备注

实体

属性 说明
has_user_voted 如果当前用户(登录或匿名)已在此轮询中投票,则返回“true”。
姓名 返回轮询的名称字段。
选项 返回与轮询关联的轮询选项对象集合。 迭代标记实体可以与此集合一起使用。
poll_url 可用于检索由模板完全呈现的轮询的 URL。
问题 返回轮询的问题字段。
submit_button_label 返回可用于替代轮询提交按钮标签的字符串。
submit_url 向其提交已完成轮询的 URL。
user_selected_option 返回用户选择的 polloption 对象(如果已投票)。
votes 返回该轮询已制成表格的投票数。

轮询选项属性

备注

实体

属性 说明
answer 返回轮询的答案字段。
percentage 以 0 到 100 的十进制数返回选项轮询中的投票百分比。
votes 返回该选项已制成表格的投票数。

请求

包含有关当前 HTTP 请求的信息。

{% assign id = request.params['id'] | escape %}

<a href={{ request.url | add_query: 'foo', 1 | escape }}>Link</a>

备注

  • 您可以通过使用 URL 筛选器在 Liquid 中动态构建 URL。
  • request.url 中使用的 URL 可以是任何请求的值,它为后续请求缓存。 为了确保 request.url 中的值正确,请考虑使用替代标记,部分 URL(如 ~{WebFile path})或将门户 URL 存储在站点设置中。
  • Power Pages 发行版 9.3.8.x 或更高版本默认为用户请求 Liquid 对象实施转义 Liquid 筛选器。 要禁用此默认配置并允许这些 Liquid 对象而不转义 Liquid 筛选器,请参阅门户站点设置 - Site/EnableDefaultHtmlEncoding

属性

属性 描述
参数 当前请求的指定参数值。 params 是 URL 查询字符串参数、窗体公告参数和 Cookie 的组合。
Path 当前请求 URL 的路径。
/profile/
path_and_query 当前请求 URL 的路径和查询。
/profile/?foo=1&bar=something
查询 当前请求 URL 的查询部分。
?foo=1&bar=something
url 当前请求的完整 URL。
https://www.example.com/profile/?foo=1&bar=something

searchindex

searchindex 对象在 Dataverse 表标记内使用,提供查询结果的访问权限。

{% searchindex query: 'support', page: params.page, page_size: 10 %}

{% if searchindex.results.size > 0 %}

<p>Found about {{ searchindex.approximate_total_hits }} matches:</p>

<ul>

{% for result in searchindex.results %}

<li>

<h3><a href={{ result.url | escape }}>{{ result.title | escape }}</a></h3>

<p>{{ result.fragment }}</p>

</li>

{% endfor %}

</ul>

{% else %}

<p>Your query returned no results.</p>

{% endif %}

{% endsearchindex %}

属性

属性 说明
approximate_total_hits 返回与索引查询匹配的大概点击总数。 由于搜索索引工作的方式与安全筛选和其他设计因素有关,此数字仅是一个概数,某些情况下,可能无法完全匹配当前用户可用结果的总数。
页面 返回当前查询的页码。
page_size 返回当前查询的最大页面尺寸。 如果希望为当前页返回实际的结果数量(因为这可能小于指定的最大页面大小),请使用 results.size。
结果 在搜索索引结果对象时,返回查询结果页面。

搜索索引结果

属性 说明
实体 结果的基础实体
fragment 结果的相关短文本片段,与使用 <em> HTML 标记突出显示的指定查询匹配的术语。 某些类型的查询不支持突出显示的片段,如模糊匹配查询 (~) 和通配符查询 (*)。 这些情况下该属性将为空。
Id 结果的基本记录的 Dataverse 表 ID,作为字符串。 例如,936DA01F-9ABD-4d9d-80C7-02AF85C822A8
logical_name 结果的基本记录的 Dataverse 表逻辑名称。 例如,adx_webpage
数字 结果的数量,所有结果页,从 1 开始。 例如,第二个结果页的第一个结果,页面大小为 10,此值将为 11。
score 结果的 Lucene 评分,作为浮点值。 结果将按该值排列的顺序返回。
title 结果的标题。
url 结果的 URL。 这通常(但未必一定)是当前应用程序的绝对路径,而不是完整的 URL。 例如:/articles/article1/

设置

允许您按名称加载任何网站设置。 如果未找到具有指定名称的设置,将返回 null

备注

设置将返回为字符串,但是,您可以使用类型筛选器将其转换为其他类型。

{{ settings[My Setting] }}

{% assign search_enabled = settings[Search/Enabled] | boolean %}

{% if search_enabled %}

Search is enabled.

{% endif %}

{% assign pagesize = settings['page size'] | integer | default: 10 %}

{% if pagesize > 10 %}

Page size is greater than 10.

{% endif %}

站点地图

允许访问门户站点地图。

<h1>{{ sitemap.root.title }}</h1>

<ul class=breadcrumb>

{% for crumb in sitemap.current.breadcrumbs %}

<li><a href={{ crumb.title }}>{{ crumb.title }}</a></li>

{% endfor %}

<li class=active>{{ sitemap.current.title }}</li>

</ul>

{% for child in sitemap.current.children %}

<a href={{ child.url }}>{{ child.title }}</a>

{% endfor %}

It's also possible to load a site map node by URL path:

{% assign node = sitemap[/content/page1/] %}

{% if node %}

{% for child in node.children %}

<a href={{ child.url }}>{{ child.title }}</a>

{% endfor %}

{% endif %}

站点地图属性

属性 说明
当前 返回当前页面的站点地图节点对象。
返回该网站的根(主页)页面的站点地图节点对象。

站点地图节点属性

属性 说明
导航痕迹 返回节点的导航痕迹站点地图节点对象,以站点地图根节点开头,以父项结尾。
子级 返回节点的子站点地图节点对象。
说明 节点的说明/摘要内容。 (此字段可能包含 HTML)。
实体 返回节点的基础实体。 如果节点没有基础表,此值将为 null。
is_sitemap_ancestor 如果站点地图节点是当前节点的上级节点,返回 true,否则返回 false。
is_sitemap_current 如果站点地图节点是当前节点,返回 true,否则返回 false。
父级 返回节点的父站点地图节点。 如果节点是根节点,父项将是 null。
头衔 节点的标题。
URL 节点的 URL。

网站标记

允许您按名称加载任何网站标记。 如果网站标记存在,将返回网站标记对象。 如果未找到具有指定名称的网站标记,将返回 null

{{ sitemarkers[Login].url }}

{% assign my_sitemarker = sitemarkers["My Site Marker"] %}

{% if my_sitemarker %}

<a href={{ my_sitemarker.url }}>{{ my_sitemarker.adx_name }}</a>

{% else %}

Site marker My Site Marker does not exist.

{% endif %}

网站标记属性

属性 说明
url 网站标记目标的 URL。
[属性逻辑名] 您可以按逻辑名称访问网站标记目标 Dataverse 记录的任何属性。 例如,{{ sitemarker.adx_name }}

片段

允许您按名称加载任何内容片段。 如果未找到具有指定名称的片段,将返回 null

{{ snippets[Header] }}

{% assign footer = snippets[Footer] %}

{% if footer %}

{{ footer }}

{% else %}

No footer snippet was found.

{% endif %}

tablerowloop

包含在迭代标记循环块中有用的属性。

备注

forloop 只能在迭代标记标记中使用。

属性

属性 说明
Col 返回当前行的索引,从 1 开始。
col0 返回当前行的索引,从 0 开始。
col_first 如果当前列是某行中第一列,则返回 true,否则返回 false。
col_last 如果当前列是某行中的最后一列,则返回 true,否则返回 false。
第一个 如果是循环的第一个迭代,返回 true。 如果不是第一个迭代,返回 false。
索引 当前项目在集合中的位置,其中第一个项目具有 1 位置。
index0 当前项目在集合中的位置,其中第一个项目具有 0 位置。
最后一页 如果是循环的最后一个迭代,返回 true。 如果不是最后一个迭代,返回 false。
长度 返回循环ߝ的迭代数量,即迭代的集合中项目的数量。
Rindex 循环中其余项目的数量 (长度 - 索引),其中 1 是最后项目的索引。
rindex0 循环中其余项目的数量 (长度 - 索引),其中 0 是最后项目的索引。

用户

引用当前门户用户,允许对基础 Dataverse 联系人记录的所有属性的访问。 如果没有用户登录,此变量将为 null

用户是实体对象。

{% if user %}
 
Hello, {{ user.fullname | escape }}!
 
{% else %}
 
Hello, anonymous user!
 
{% endif %}

备注

Power Pages 发行版 9.3.8.x 或更高版本默认为用户请求 Liquid 对象实施转义 Liquid 筛选器。 要禁用此默认配置并允许这些 Liquid 对象而不转义 Liquid 筛选器,请参阅门户站点设置 - Site/EnableDefaultHtmlEncoding

属性

除了具有实体对象的所有属性之外,用户还具有以下属性。

属性 说明
角色 返回用户所属的角色,作为数组
{% if user.roles contains 'Administrators' %} User is an administrator. {% endif %}
注意:您可以使用 has_role 筛选器来测试各个角色成员资格。
basic_badges_url 返回用于检索用户徽章的服务 URL。
若要呈现用户的徽章,必须包括具有“data-badge”和“data-uri”属性的标记。 要呈现当前用户的徽章:
<div data-badge data-uri='{{user.basic_badges_url }}'></div>
要按 ID(可变 userid)呈现用户的徽章:
`<div data-badge data-uri='{{user.basic_badges_url

允许您按名称或 ID 加载任何 weblinks。

如果 Web 链接集存在,Web 链接集对象将返回。 如果具有指定名称或 ID 的 Web 链接集未找到,null 将返回。

<!-- Load web link set by ID -->

{{ weblinks[page.adx_navigation.id].name }}

<!-- Load web link set by name -->

{% assign nav = weblinks[Primary Navigation] %}

{% if nav %}

<h1>{{ nav.title | escape }}</h1>

<ul>

{% for link in nav.weblinks %}

<li>

<a href={{ link.url | escape }} title={{ link.tooltip | escape }}>

{% if link.image %}

<img src={{ link.image.url | escape }} alt={{ link.image.alternate_text | escape }} />

{% endif %}

{{ link.name | escape }}

</a>

</li>

{% endfor %}

</ul>

{% endif %}

备注

Web 链接集是一个实体对象,除了下面列出的属性之外,还具有所有相同的属性。

属性 说明
副本 Web 链接集的 HTML 副本。
客户 Web 链接集的名称。
头衔 Web 链接集的标题。
Weblinks 与 Web 链接集关联的 Web 链接对象的数组。
[属性逻辑名] 您可以按逻辑名称访问 Web 链接集 Dataverse 记录的任何属性。 例如,{{ weblinkset.createdon }}

备注

Web 链接是一个实体对象,除了下面列出的属性之外,还具有所有相同的属性。

属性 说明
说明 Web 链接的 HTML 说明。
display_image_only 指示 Web 链接是否应仅作为图像显示而不包含链接文本的布尔属性。
display_page_child_links 指示 Web 链接是否应作为子链接显示指向链接页面的站点地图子页面的链接的布尔属性。
图像 此链接的 Web 链接图像对象。 如果图像不存在,则此属性将为空。
is_external 指示 Web 链接的目标 URL 是否是到外部网站(而不是到内部门户页面)的布尔属性。
is_sitemap_ancestor 如果 Web 链接的 URL 引用当前站点地图节点的上级节点,返回 true,否则返回 false。
is_sitemap_current 如果 Web 链接的 URL 引用当前站点地图节点,返回 true,否则返回 false。
姓名 Web 链接的名称/标题。
Nofollow 指示 Web 链接是否应标记为 rel=nofollow 的布尔属性。
open_in_new_window 指示选择后 Web 链接是否应该在新浏览器窗口/选项卡中打开的布尔属性。
工具提示 Web 链接的工具提示文本。
URL Web 链接的 URL。
Weblinks 与 Web 链接集关联的子 Web 链接对象的数组。
[属性逻辑名] 您可以按逻辑名称访问 Web 链接 Dataverse 记录的任何属性。 例如,{{ weblink.createdon }}
alternate_text 图像的替换文本。
Height 包含指定图像高度的整数。 如果未提供高度值,该属性将为空。
URL 图像的 URL。
宽度 包含指定图像宽度的整数。 如果未提供宽度值,该属性将为空。

网站

请参阅门户网站,这样就可以访问门户的 Dataverse Website (adx_website) 记录的所有属性。

备注

网站是一个实体对象,具有所有相同属性。

代码

{{ website.adx_name }} ({{ website.id }})

输出

Community Portal (936DA01F-9ABD-4d9d-80C7-02AF85C822A8)

属性

下表列出了此标记的属性,可以使用这些属性替换默认值以避免缓存。

默认值 替代项(避免缓存) 示例
sign_in_url sign_in_url_substitution 默认website.sign_in_url/en-US/SignIn?returnUrl=%2Fen-US%2F
替代(避免缓存)website.sign_in_url_substitution/en-US/SignIn?returnUrl=%2Fen-US%2Fsubstitute-page%2F
(此示例中的“substitute-page”会替换默认的缓存的 URL。)
sign_out_url sign_out_url_substitution 默认website.sign_out_url/en-US/Account/Login/LogOff?returnUrl=%2Fen-US%2F
替代(避免缓存)website.sign_out_url_substitution/en-US/Account/Login/LogOff?returnUrl=%2Fen-US%2Fsubstitute-page%2F
(此示例中的“substitute-page”会替换默认的缓存的 URL。)

另请参阅

Liquid 类型
Liquid 标记
Liquid 筛选器