SharePoint 网站模板和网站脚本概述

注意

  • 网站模板和网站脚本目前仅受 SharePoint Online 支持。
  • 在以前版本的 SharePoint 中,网站模板称为网站设计,但将称为网站模板,这些模板将向前称为网站模板。
  • SharePoint 具有新的网站模板体验,所有具有 SharePoint 网站创建权限的 SharePoint 用户都将可以使用该体验。 了解有关新网站模板体验的更多信息
  • 自目前起,无法禁用网站模板体验。
  • 由你的组织创建并设置为默认模板的网站模板将在创建新网站时自动应用,但网站所有者可以通过依次选择“设置”和“应用网站模板”进行更新。
  • 网站模板版本历史记录当前不适用于新网站模板体验,但将包含在将来的迭代中。

使用网站脚本和网站设计,可以通过自己的自定义配置,自动预配新的或现有的新式 SharePoint 网站。

如果组织中有人新建 SharePoint 网站,通常都需要确保一定水平的一致性。 例如,可能需要向每个新网站都应用适当的品牌和主题。 可能还需要有每次新建网站时都必须应用的详细网站预配脚本(如使用 PnP 预配引擎)。

本文介绍了如何使用网站设计和网站脚本提供要在新建网站时应用的自定义配置。

网站设计的工作原理

可以在每次新建网站时使用它们,以应用一组一致的操作。 还可以将它们应用于现有新式网站(与组连接的团队网站和通信网站)。 大多数操作通常影响的是网站本身,如设置主题或创建列表。 不过,网站设计也可以包含其他操作,如将新网站 URL 记录到日志或发送推文。

注意

  • 使用自定义网站脚本创建的网站模板将在网站模板库中的“来自你的组织”选项卡中显示。
  • 你的组织创建的自定义网站模板将基于用户选择的网站类型(通信网站或团队网站)显示在网站模板库中。 因此,用户很可能不会在网站模板库中看到组织的所有网站模板。 很快,无论选择了哪种类型的网站,用户都可以浏览组织提供的所有网站模板。

请创建网站设计,并在 SharePoint 中将网站设计注册到下列新式模板网站之一:团队网站或通信网站。 有关网站设计的工作原理,请执行以下步骤。

  1. 在开发人员租户上转到 SharePoint 起始页。

  2. 选择“创建网站”

    将看到两个新式模板网站:“团队网站”和“通信网站”

  3. 选择所需的网站类型。

    • SharePoint 将使用 主题 网站模板自动创建通信网站。
    • 如果选择了默认团队网站,SharePoint 将使用 团队协作 模板创建新网站。

    有关如何更改默认网站模板的详细信息,请参阅 自定义默认网站模板

  4. 导航到“设置”图标,然后选择“应用网站模板”,根据在步骤 3 中选择的网站类型查看 Microsoft 提供的网站模板。

选择网站模板后,SharePoint 将创建新网站,并运行网站模板的网站脚本。 网站脚本提供模板的详细信息,例如创建新列表或应用主题。 这些脚本操作在后台运行。 脚本完成后,页面将刷新以显示网站脚本详细信息。

注意

现在可以将网站设计应用于先前创建的新式网站集。 有关详细信息,请参阅 REST APIPowerShell 文章。

网站脚本剖析

网站脚本是 JSON 文件,指定要在新建网站时运行的操作的顺序列表。 操作按列表中的顺序运行。

下面的示例展示了包含两个顶级操作的脚本。 首先,它会应用之前创建的“Contoso 资源管理器”主题。 然后,它会创建“客户跟踪”列表。

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/site-design-script-actions.schema.json",
  "actions": [
    {
      "verb": "applyTheme",
      "themeName": "Contoso Explorers"
    },
    {
      "verb": "createSPList",
      "listName": "Customer Tracking",
      "templateType": 100,
      "subactions": [
        {
          "verb": "setDescription",
          "description": "List of Customers and Orders"
        },
        {
          "verb": "addSPField",
          "fieldType": "Text",
          "displayName": "Customer Name",
          "isRequired": false,
          "addToDefaultView": true
        },
        {
          "verb": "addSPField",
          "fieldType": "Number",
          "displayName": "Requisition Total",
          "addToDefaultView": true,
          "isRequired": true
        },
        {
          "verb": "addSPField",
           "fieldType": "User",
          "displayName": "Contact",
          "addToDefaultView": true,
          "isRequired": true
        },
        {
          "verb": "addSPField",
          "fieldType": "Note",
          "displayName": "Meeting Notes",
          "isRequired": false
        }
      ]
    }
  ]
}

在 JSON 中,网站脚本中的每个操作都是由谓词值指定。 在上面的脚本中,第一个操作是由 applyTheme 谓词指定。 接下来,createSPList 谓词创建列表。 请注意,createSPList 谓词包含自己的一组谓词,用于仅对此列表执行其他操作。

可用操作包括:

  • 创建新列表或库(或修改在该网站中创建的默认列或库)
  • 创建网站栏、内容类型和配置其他列表设置
  • 设置网站品牌打造属性,如导航布局、页眉布局和页眉背景
  • 应用主题**
  • 设置网站徽标
  • 将链接添加到快速启动或中心导航**
  • 触发 Power Automate 流
  • 从应用程序目录安装部署的解决方案
  • 设置网站的区域设置**
  • 将主体(用户和组)添加到 SharePoint 角色**
  • 设置网站的外部共享功能**

有关可用操作及其参数的完整列表,请参阅 JSON 架构

注意

  • 对于频道网站,将自动阻止标记为 ** 的操作。
  • 对于库和列表,请使用 PowerShell 命令 Get-SPOSiteScriptFromList 以便从现有 SharePoint 列表创建网站脚本语法。

预配后,可以在同一网站上重新运行网站脚本。 由于网站脚本不具有破坏性,因此它们可以在重新运行时,确保网站与脚本中的配置保持一致。

例如,如果网站上的现有列表与网站脚本要创建的列表同名,网站脚本只会向现有列表添加缺少的字段。

我们之前将网站脚本操作的限制限定为 30 个。 这仍然是使用 Invoke-SPOSiteDesign 命令同步应用的脚本的限制,但根据客户反馈和对其他操作的支持,在通过 UI 或使用 Add-SPOSiteDesignTask 命令) 异步 (应用脚本时,我们已将此限制提高到 300 个操作 (或 100,000 个字符) 。

每个租户还有 100 个网站脚本和 100 个网站设计的限制。

使用 PowerShell 或 REST 处理网站设计和网站脚本

可以使用 PowerShell 或 REST API 创建网站设计和网站脚本。 下面的示例展示了如何创建网站脚本和使用网站脚本的网站设计。

C:\> Get-Content 'c:\scripts\site-script.json' `
     -Raw | `
     Add-SPOSiteScript `
    -Title "Contoso theme and list"

Id          : 2756067f-d818-4933-a514-2a2b2c50fb06
Title       : Contoso theme and list
Description :
Content     :
Version     : 0

C:\> Add-SPOSiteDesign `
  -Title "Contoso customer tracking" `
  -WebTemplate "64" `
  -SiteScripts "2756067f-d818-4933-a514-2a2b2c50fb06" `
  -Description "Creates customer list and applies standard theme"

在前面的示例中, Add-SPOSiteScript cmdlet 或 CreateSiteScript REST API 返回站点脚本 ID。 这用于后续调用 Add-SPOSiteDesign cmdlet 或 CreateSiteDesign REST API 中的 SiteScripts 参数。

参数 网站模板类型
WebTemplate 64 工作组网站模板
WebTemplate 1 1 团队网站(已禁用组创建)
WebTemplate 68 通信网站模板
WebTemplate 69 频道网站模板

有关创建网站模板的分步信息,请参阅开始创建网站模板

注意

  • 一个网站设计可以运行多个脚本。 脚本 ID 以数组形式进行传递,并按列出的顺序运行。
  • 以前的网站模板术语可能仍显示在某些 cmdlet 中,脚本标签显示为"网站设计"。"

使用 Power Automate 流执行 PnP 预配和自定义

网站脚本提供的一个操作是能够触发 Power Automate 流。 这样一来,可以指定在网站脚本原生提供的操作范围之外需要的任何自定义操作。

如果使用 PnP 预配引擎自动创建网站,可以使用 Power Automate 流与网站设计进行集成。 既可以维护所有现有预配脚本,也可以使用此技术新建自定义预配脚本。

Microsoft 流的触发过程

此过程的运行机制如下:

  1. 脚本使用包含其他详细信息的 URL 实例化 Power Automate 流。
  2. 流向已配置的 Azure 存储队列发送消息。
  3. 消息触发调用已配置的 Azure 函数。
  4. Azure 函数运行自定义脚本(如 PnP 预配引擎),应用自定义配置。

有关如何使用 PnP 预配配置自己的Power Automate流的分步教程,请参阅 使用 PnP 预配引擎生成完整的站点模板

界定访问权限

可以将网站设计配置为只对组织中的特定组或人员显示。 这样一来,可以有效确保用户只看到专供自己使用的网站设计。 例如,你可能需要让会计部门只看到专供他们使用的网站设计。 向其他任何人显示会计网站设计可能都没有意义。

默认情况下,网站设计在创建后可供所有人查看。 使用 Grant-SPOSiteDesignRights cmdlet 或 GrantSiteDesignRights REST API 可以界定访问权限。 可以指定只有用户或启用邮件的安全组才能访问。

下面的示例展示了如何向 Nestor(虚构 Contoso 网站中的用户)授予对网站设计的查看权限。

Grant-SPOSiteDesignRights `
  -Identity 44252d09-62c4-4913-9eb0-a2a8b8d7f863 `
  -Principals "nestorw@onmicrosoft.com" `
  -Rights View

有关使用作用域的详细信息,请参阅 范围访问网站模板

另请参阅