创建 Web 模板
要创建自定义页面模板,您可以使用基本属于布局模板的 Web 模板行。 例如,如果 Web 模板包含静态 HTML,该 HTML 会在使用该模板的页面输出中按原样呈现。 Web 模板的真正优势在于能够包含 Liquid 代码,从而增加对静态内容的处理能力,其中包括 Dataverse 数据的访问权限。
Web 模板是包含以下列的简单表:
名称 - 模板包含在其他内容中或由其他模板扩展时,通过本名称引用该模板。
网站 - 使用该模板的网站行。
源 - 模板的源内容。 它可以是静态文本、HTML 片段,最常见的是使用 Liquid 的布局。
MIME 类型 - 定义呈现模板时服务器向客户端发送的多用途 Internet 邮件扩展 (MIME) 类型。 如果未提供值,则假定值为
text/html
,这是 HTML 页面的标准类型。 您可以创建 Web 模板,呈现专门的内容。 例如,可以创建一个 Web 模板,返回一些json
格式的 Microsoft Dataverse 数据。 在这种情况下,MIME 类型将设置为application/json
。
Web 模板管理
Power Pages 网站中的 Liquid 实现包含许多模板标记,这些标记有助于管理模板和增强可重用性。
FetchXML 标记
借助 fetchxml
标记,用户能够查询 Dataverse 中的数据并在页面中呈现结果。
{% fetchxml varResults %}
<!— Fetchxml query -->
<fetch>
<entity name="account">
<attribute name="name" />
</entity>
</fetch>
{% endfetchxml %}
varResults
变量包含查询结果。
{% for account in varResults.results.entities %}
<p>{{ account.name }}</p>
{% endfor %}
重要提示
表权限将始终应用于使用 Liquid 检索的数据,包括 fetchxml
标记。
Comment 标记
使用 comment
标记时,将不会呈现块中的任何内容,也不会运行块中的任何 Liquid 代码。 本标记可用于在复杂模板中加入扩展注释,以及在您进行故障排除时临时取消注释代码块。
This is a {% comment %}very useful {% endcomment %}comment.
上述逻辑可生成以下结果:
This is a comment.
Raw 标记
使用 raw
标记可以在页面上输出 Liquid 代码,而无需对其进行分析和实现。 本标记可使用冲突的客户端语法生成内容(如句柄)。 当页面内容需要包含 Liquid 代码片段时,它也很有用,例如讨论 Liquid 语言的用法并包含示例的知识库文章。
Hello, {% raw %}{{ user.fullname }}.{% endraw %} Nice to meet you.
上述逻辑可生成以下结果:
Hello, {{ user.fullname }}. Nice to meet you.
请注意,user.fullname
显式呈现(而不是作为 Liquid 指令进行处理)并转换为用户的实际名称。
Include 标记
include
标记使一个模板的内容包含在另一个模板中(按名称)。 使用本标记可以在多个位置重用公共模板片段,例如呈现社交链接。 包含的模板有权访问父模板中定义的变量,并且可以传递参数。
{% include 'Breadcrumbs', separator: '>' %}
本逻辑包含由 Breadcrumbs 模板生成的输出,该模板将 separator
变量设置为右尖括号 (>
) 符号。
Block 标记
通过使用 block
标记,可以在模板中定义一个块,该块定义一个可由扩展当前模板的模板选择性覆盖的区域。
Extend 标记
当与 block
标记配合使用时,extend
标记可提供模板继承。 本标记允许多个模板在覆盖父布局的特定区域时使用共享布局。 使用 extend
后,它必须是模板中的第一个内容,且其后只能使用一个或多个块标记。
基本模板
基本模板逻辑如下:
<div>
Hello
{% block content %}default content{% endblock %}
</div>
子模板
子模板逻辑如下:
{% extends 'Base Template' %}
{% block content %}Power Pages websites{% endblock%}
子模板可生成以下输出:
<div>
Hello
Power Pages websites
</div>
extend
和 block
标记通常用于将布局和内容模板分开。 父模板或基本模板通常定义整体页面布局,例如,是单列还是双列页面。 扩展基本模板的子模板则仅定义父模板指定的块的内容。
有关使用 block/extend
和 include
标记演示模板继承的详尽 Liquid 代码示例,请参阅 Power Pages 中的自定义页面布局。
Web 模板最佳做法
要改进模板结构,使 Web 模板更易管理,请遵循以下准则:
为模板选择描述性名称,因为其他模板将引用或包含该模板的名称。
分解页面布局,将布局与内容分开。 这些布局是可扩展模板的备选项。
注意可重复和可重用的片段;可将这些片段定义为子模板并使用
include
标记。使用
include
标记有助于重用布局和常用的 JavaScript 片段。 使用include
标记提供的参数使 JavaScript 模板变得“智能”。 这些片段可被内联插入。将可重用的较大 JavaScript 块移动到单独的文件中,并将其作为引用部分插入。 客户端浏览器可单独加载它们,并进行缓存。 此外,您可以缩小外部加载脚本,从而提高性能。
查找需要翻译的页面部分,进行多语言实现。 将这些页面定义为页面内容或内容片段。
标识可编辑片段。 确定您希望由用户负责内容管理和维护的网页部分。
在创建模板时,注意布局不要太拥挤,但为了避免过多空白行,可以在标记中使用连字符,例如:
{%- if username -%} Hello, {{ user.firstname}} {%- endif -%}
使用
comments
标记描述模板的复杂部分。研究已通过起点门户部署的模板,并在 Power Pages 中的自定义页面布局中查找 Liquid 技术。
在预配起点门户时,已安装大量现成的 Liquid 模板:内置 Web 模板。 它们的名称是固定的,且一些模板是不可编辑的。
有关详细信息,请参阅 Liquid 概览。