创建 Web 模板

已完成

要创建自定义页面模板,您可以使用基本属于布局模板的 Web 模板行。 例如,如果 Web 模板包含静态 HTML,该 HTML 会在使用该模板的页面输出中按原样呈现。 Web 模板的真正优势在于能够包含 Liquid 代码,从而增加对静态内容的处理能力,其中包括 Dataverse 数据的访问权限。

在 Power Pages Management 应用中编辑 Power Pages Web 模板的屏幕截图。

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>

extendblock 标记通常用于将布局和内容模板分开。 父模板或基本模板通常定义整体页面布局,例如,是单列还是双列页面。 扩展基本模板的子模板则仅定义父模板指定的块的内容。

有关使用 block/extendinclude 标记演示模板继承的详尽 Liquid 代码示例,请参阅 Power Pages 中的自定义页面布局

Web 模板最佳做法

要改进模板结构,使 Web 模板更易管理,请遵循以下准则:

  • 为模板选择描述性名称,因为其他模板将引用或包含该模板的名称。

  • 分解页面布局,将布局与内容分开。 这些布局是可扩展模板的备选项。

  • 注意可重复和可重用的片段;可将这些片段定义为子模板并使用 include 标记。

  • 使用 include 标记有助于重用布局和常用的 JavaScript 片段。 使用 include 标记提供的参数使 JavaScript 模板变得“智能”。 这些片段可被内联插入。

  • 将可重用的较大 JavaScript 块移动到单独的文件中,并将其作为引用部分插入。 客户端浏览器可单独加载它们,并进行缓存。 此外,您可以缩小外部加载脚本,从而提高性能。

  • 查找需要翻译的页面部分,进行多语言实现。 将这些页面定义为页面内容或内容片段。

  • 标识可编辑片段。 确定您希望由用户负责内容管理和维护的网页部分。

  • 在创建模板时,注意布局不要太拥挤,但为了避免过多空白行,可以在标记中使用连字符,例如:

    {%- if username -%}
      Hello, {{ user.firstname}}
    {%- endif -%}
    
  • 使用 comments 标记描述模板的复杂部分。

  • 研究已通过起点门户部署的模板,并在 Power Pages 中的自定义页面布局中查找 Liquid 技术。

在预配起点门户时,已安装大量现成的 Liquid 模板:内置 Web 模板。 它们的名称是固定的,且一些模板是不可编辑的。

有关详细信息,请参阅 Liquid 概览