SharePoint 元数据、网站导航和发布网站功能

本文介绍如何在 SharePoint Online 中使用外接程序模型管理元数据和自定义网站导航及发布网站功能。 本文还包括使用通用 Web 编程模式和库帮助自定义 SharePoint 发布网站品牌的方式。

术语和概念

表 1. 重要的元数据、导航和发布术语和概念

术语或概念 说明和指南
内容搜索 Web 部件 SharePoint Web 部件,它以可轻松设置格式的方式在页面上显示动态搜索内容。有关详细信息,请参阅: 在 SharePoint Server 中配置搜索 Web 部件在 SharePoint 中配置内容搜索 Web 部件在 SharePoint Online 中搜索功能
ContentTypeId 设计为递归的内容类型的唯一标识符。有关详细信息,请参阅 ContentTypeId 类 (CSOM) 。
内容类型 元数据的可重用集中集合, (列) 、工作流、行为和其他信息类别的设置。有关信息,请参阅:- 创建内容类型内容类型中的自定义信息
内容类型中心 托管元数据服务应用程序的一部分,它是将内容类型发布到其他网站集的中心网站。允许从中心位置发布、重新发布和取消发布内容类型。有关信息,请参阅:- 从内容发布中心发布内容类型查看内容类型发布的错误日志
设备通道 通过使用面向多个设备的不同设计,以多种方式呈现发布网站页面的方法。有关详细信息,请参阅 在 SharePoint 中添加设备通道面板代码段
显示模板 在使用搜索技术的 Web 部件中使用,显示模板控制对搜索索引进行的查询结果的呈现。显示模板适用于所有搜索 Web 部件。有关详细信息,请参阅 SharePoint Server 中的显示模板参考
托管导航 由 SharePoint 托管元数据服务(分类)驱动的网站导航。 使用它来生成派生自托管元数据分类的网站导航。 托管导航通常最适用于产品目录。
托管元数据 集中管理的术语的分层集合,可用于在 SharePoint 中定义和属性项。您可以使用托管元数据来管理内容类型发布和创建分类。在 SharePoint 和 SharePoint Online 中,托管元数据服务用于创建托管导航- 由分类提供支持的网站导航。有关详细信息,请参阅: 自定义 SharePoint Server 2010 (ECM) 中的导航控件和提供程序 托管元数据简介SharePoint Server 2010 中的托管元数据简介、SharePoint Server 2010) (托管元数据管理 SharePoint 中的托管元数据和导航SharePoint 中的托管导航SharePoint Server 2010 中的托管元数据迁移
导航命名空间 包含客户端对象模型 (CSOM) 类,该类对发布网站支持网站导航。
分类命名空间 包含支持分类功能的 CSOM 类。有关详细信息,请参阅 同步术语组示例 SharePoint 外接程序
固定 与重复使用术语类似,固定可维护源术语与重用实例之间的共享关系。例如,在跨网站发布方案中,共享关系可以跨网站集。 每当添加或删除术语时,该操作都会在固定术语的任何位置跨层次结构进行更新。有关详细信息,请参阅 使用代码将术语固定到 SharePoint 中的导航术语集
产品目录 有关信息,请参阅以下内容:- SharePoint 中的跨网站发布在 SharePoint Server 中配置跨网站发布
代码段 您可以将 HTML 功能片段添加到 设计管理器生成的 HTML 文件中。 例如,您可能想要将设备通道面板添加到您的发布页 - 设有相关的代码片段。 以下文章提供了一些示例: 在 SharePoint 中添加设备通道面板代码段在 SharePoint 中添加 Web 部件区域代码段在 SharePoint 中添加安全剪裁代码段
结构化导航 有关使用结构化导航的信息,请参阅如何:在 SharePoint Server 2010 (ECM) 中自定义导航

将 CSOM 用于品牌发布网站的先决条件

默认情况下,发布到面向公众的 SharePoint 本地网站的 Web 内容可供匿名用户使用。 默认情况下,CSOM 和 REST 对匿名用户不可用。

重要

此方案向本地 SharePoint 网站呈现了一个潜在的严重威胁。 在使用 使用远程预配打造 SharePoint 页面品牌(#使用远程预配打造-sharepoint-页面品牌) 中所述的远程预配模型来设预配发布网站品牌之前,请确保已正确地设置你网站的安全性和权限,并考虑了匿名访问的安全隐患。

如果网站管理员创建的新 Web 应用程序包括使用发布模板并且启用了匿名访问功能的网站集,则当应用程序上载到外接程序目录中时,网站的每个用户都将可以使用匿名访问。 由于对本地 SharePoint 发布网站启用了匿名访问,那么如果未经过身份验证的用户导航到网站,会发生什么情况?

如果你创建 SharePoint 托管的外接程序并将客户端外接程序部件添加到项目中,请转到“管理中心”>“外接程序”>“管理外接程序目录”,创建 Web 应用程序的外接程序目录,发布使用 Visual Studio 创建外接程序包的 SharePoint 托管的外接程序,然后将外接程序包上载到外接程序目录。 此时,网站集管理员可以将外接程序添加到发布网站。 现在,外接程序可被添加到发布网站上的页面。

如果您编辑发布网站的主页,并将外接程序发布到其上,则外接程序可按预期方式工作。 选择外接程序的链接标题加载完整页面体验。 如果 SharePoint 出错,就意味着匿名用户没有使用 CSOM 的权限。 这是有用处的,因为默认情况下 CSOM 和 REST 对匿名用户不可用。

请注意,禁用“使用远程界面”权限会带来安全风险

在“网站权限”中,默认情况下选中“需要使用远程界面权限”复选框。 可以清除“使用远程界面权限”复选框以允许匿名用户有权使用 CSOM 和 REST。 这会使用户从使用远程界面权限分离,这些权限可允许用户访问 SOAP、WebDAV 和 CSOM。 清除该复选框还会删除使用 SharePoint Designer 的功能。

你有时可能希望移除使用 SharePoint Designer 的功能,但仍允许使用 CSOM。 “使用远程界面权限”复选框允许你让匿名用户使用 CSOM 而不要求他们拥有使用远程界面权限。 当清除了“使用远程接口权限”复选框,并选择外接程序的链接标题来加载完整页面体验时,SharePoint 不会引发错误。 基本错误处理代码将这种情况视为匿名用户。

警告

  • 将应用添加到使用发布模板的面向公众的 SharePoint 网站时,请不要清除“使用远程界面权限”中网站权限复选框。 对匿名用户启用 CSOM 可能会带来信息泄露风险,所泄露的信息可能会远远超出预期。 也就是说,甚至可以访问完整 CSOM,SharePoint 权限仍然应用。 匿名用户仅能查看明确可供匿名用户使用的列表或项目。 匿名用户通过 CSOM 和 REST 所能使用的信息比你在网页上所看到的要多。
  • 除非绝对有必要,请不要在 SharePoint 本地发布网站上启用了匿名访问权限时清除“需要使用远程界面权限”复选框。 这样做可能会将已发布和未发布的网站内容都暴露于匿名用户,可能会让你的网站受到拒绝服务攻击。

使用 ViewFormPagesLockdown 功能

若要防止用户在面向公众的 SharePoint 网站上访问表单页(例如,Pages/Forms/AllItems.aspx),请使用 ViewFormPagesLockdown 功能。 它旨在防止用户看到“创建者”和“修改者”信息。 此功能将移除对查看应用程序页面使用远程界面的权限。 当此功能处于活动状态时,用户不能转到 Pages/Forms/AllItems.aspx 并查看该库中的项目。

如果 CSOM 和 REST 可供所有匿名用户使用(如果清除了“使用远程接口权限检查”框),尽管他们仍然无法在浏览器中看到“创建者”和“修改者”信息,但他们可以使用 CSOM 或 REST 来访问该信息。

配置匿名访问权限(安全修整)

通过为 Web 应用程序配置匿名访问,可以指定匿名策略: 拒绝写入 - 没有写入访问权限 。 This means that users with anonymous access can't write to the site—even with CSOM or REST code. Anonymous users can only see the information that was granted to them when anonymous access to the site was configured.

未发布的页面在默认情况下对匿名用户不可见。 匿名用户只能看到授予他们可见的列表。

重要

如果已清除“使用远程界面权限”复选框,请使用权限模型和其他预防措施,以确保匿名用户无权访问其不应访问的内容。

阻止拒绝服务攻击

没有通过 CSOM 进行缓存。 这意味着,恶意攻击者可以同时查询列表中的数千个项目,所有这些项目都处在默认列表视图阈值下且负责 SharePoint 数据库。 这可能会不断扩展甚至升级到整个拒绝服务攻击。

使用仅应用策略

可以将仅限应用的策略与提供程序托管的外接程序一起使用。仅应用策略允许加载项执行当前用户无权执行的操作。 例如,具有只读权限的用户要想写入列表,可以使用外接程序和仅应用权限对列表进行写入。

有关详细信息,请参阅 SharePoint 外接程序的授权和身份验证了解 SharePoint 相关应用和 Office 相关应用的身份验证和权限(第 9 频道视频)。

实现 SSL

使用外接程序模型时,实现安全套接字层 (SSL) 协议以管理 Internet 上的邮件传输安全性。 SSL 通过远程网站起作用,可在具有持有者 + base64 编码(不加密)字符串值的 HTTP 标头授权中发送访问令牌。

重要

SSL 可保护你的 SharePoint 发布网站免受想要获取授权令牌并利用该访问权限的攻击者实施的攻击。

远程配置和发布网站

你可以使用远程预配做法将品牌打造和其他自定义项预配到 SharePoint 发布网站。

发布网站依赖于内容类型和 ContentTypeId,用于将内容类型链接到页面布局和显示模板。 自定义和预配 SharePoint 发布页面内容依赖于此功能。 自定义发布网站预配行为的其他方面(如托管元数据服务和托管导航)不依赖于 ContentTypeId,且在 CSOM 中完全受支持。

其他发布网站自定义选项(如设备通道和显示模板)不需要自定义 CSOM。 它们依赖于设计管理器功能、CSS 和 HTML。 它们是您从头生成且不需要迁移的后设置的自定义项。

托管元数据

首次在 SharePoint 2010 中引入的托管元数据功能,使您可以定义可在 SharePoint 中使用的元数据标记的自定义层次结构或分类。 如果您想要创建自定义网站导航,您可以使用托管的导航功能,它是基于托管的元数据基础结构而生成。

分类是对那些可依据相似性进行分组的字词、标签或术语的层次分类。 SharePoint 分类中的最小单位是术语。 术语可以分组为术语集。 术语集可以按相关性分组为更大的组。

有关对 SharePoint 中分类的简介信息,请参阅 针对 SharePoint 2010 中企业托管元数据的简介针对 SharePoint 2010 中托管元数据的简介

SharePoint 2013 向托管元数据功能集引入了新的 API 和功能。

托管元数据编程模型

对于 SharePoint,托管元数据的 .NET 服务器编程模型在下列命名空间集中定义:

等效的 CSOM 类均位于 Client.Taxonomy 命名空间

与 SharePoint 对象模型的其他方面不同,对于托管元数据,.NET 服务器编程模型类和成员与 CSOM 类和成员之间有密切的相关性。

以下是一些重要区别:

下表比较了 .NET 服务器对象模型和 CSOM 对象模型中的类。

表 2. 两个模型中的类比较

.NET 服务器对象模型 等效的 CSOM API
Microsoft.SharePoint.Taxonomy.ChangedGroup Microsoft.SharePoint.Client.Taxonomy.ChangedGroup
Microsoft.SharePoint.Taxonomy.ChangedItem Microsoft.SharePoint.Client.Taxonomy.ChangedItem
Microsoft.SharePoint.Taxonomy.ChangedItemCollection Microsoft.SharePoint.Client.Taxonomy.ChangedItemCollection
Microsoft.SharePoint.Taxonomy.ChangedItemType Microsoft.SharePoint.Client.Taxonomy.ChangedItemType
Microsoft.SharePoint.Taxonomy.ChangedOperationType Microsoft.SharePoint.Client.Taxonomy.ChangedOperationType
Microsoft.SharePoint.Taxonomy.ChangedSite Microsoft.SharePoint.Client.Taxonomy.ChangedSite
Microsoft.SharePoint.Taxonomy.ChangedTerm Microsoft.SharePoint.Client.Taxonomy.ChangedTerm
Microsoft.SharePoint.Taxonomy.ChangedTermSet Microsoft.SharePoint.Client.Taxonomy.ChangedTermSet
Microsoft.SharePoint.Taxonomy.ChangedTermStore Microsoft.SharePoint.Client.Taxonomy.ChangedTermStore
不适用。 Microsoft.SharePoint.Client.Taxonomy.ChangeInformation
不适用。 Microsoft.SharePoint.Client.Taxonomy.CustomPropertyMatchInformation
Microsoft.SharePoint.Taxonomy.FeatureIds 不适用。
Microsoft.SharePoint.Taxonomy.Group 不适用。
Microsoft.SharePoint.Taxonomy.HiddenListFullSyncJobDefinition 不适用。
Microsoft.SharePoint.Taxonomy.ImportManager 不适用。
Microsoft.SharePoint.Taxonomy.Label Microsoft.SharePoint.Client.Taxonomy.Label
Microsoft.SharePoint.Taxonomy.LabelCollection Microsoft.SharePoint.Client.Taxonomy.LabelCollection
不适用。 Microsoft.SharePoint.Client.Taxonomy.LabelMatchInformation
Microsoft.SharePoint.Taxonomy.MobileTaxonomyField Microsoft.SharePoint.Client.Taxonomy.MobileTaxonomyField
Microsoft.SharePoint.Taxonomy.StringMatchOption Microsoft.SharePoint.Client.Taxonomy.StringMatchOption
Microsoft.SharePoint.Taxonomy.TaxonomyField Microsoft.SharePoint.Client.Taxonomy.TaxonomyField
Microsoft.SharePoint.Taxonomy.TaxonomyFieldControl 不适用。
Microsoft.SharePoint.Taxonomy.TaxonomyFieldEditor 不适用。
Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue Microsoft.SharePoint.Client.Taxonomy.TaxonomyFieldValue
Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection Microsoft.SharePoint.Client.Taxonomy.TaxonomyFieldValueCollection
Microsoft.SharePoint.Taxonomy.TaxonomyItem Microsoft.SharePoint.Client.Taxonomy.TaxonomyItem
Microsoft.SharePoint.Taxonomy.TaxonomyItemPicker 不适用。
Microsoft.SharePoint.Taxonomy.TaxonomyRights 不适用。
Microsoft.SharePoint.Taxonomy.TaxonomySession Microsoft.SharePoint.Client.Taxonomy.TaxonomySession
Microsoft.SharePoint.Taxonomy.TaxonomyWebTaggingControl 不适用。
Microsoft.SharePoint.Taxonomy.Term Microsoft.SharePoint.Client.Taxonomy.Term
Microsoft.SharePoint.Taxonomy.TermCollection Microsoft.SharePoint.Client.Taxonomy.TermCollection
不适用。 Microsoft.SharePoint.Client.Taxonomy.TermGroup
不适用。 Microsoft.SharePoint.Client.Taxonomy.TermGroupCollection
Microsoft.SharePoint.Taxonomy.TermProperty 不适用。
Microsoft.SharePoint.Taxonomy.TermPropertyToolPart 不适用。
Microsoft.SharePoint.Taxonomy.TermSet Microsoft.SharePoint.Client.Taxonomy.TermSet
Microsoft.SharePoint.Taxonomy.TermSetCollection Microsoft.SharePoint.Client.Taxonomy.TermSetCollection
Microsoft.SharePoint.Taxonomy.TermSetItem Microsoft.SharePoint.Client.Taxonomy.TermSetItem
Microsoft.SharePoint.Taxonomy.TermStore Microsoft.SharePoint.Client.Taxonomy.TermStore
Microsoft.SharePoint.Taxonomy.TermStoreCollection Microsoft.SharePoint.Client.Taxonomy.TermStoreCollection
Microsoft.SharePoint.Taxonomy.TermStoreOperationException 不适用。
Microsoft.SharePoint.Taxonomy.TreeControl 不适用。

页面布局

对于发布网站,页面布局定义特定类别页面的布局。 它还使用内容占位符定义可自定义的页面区域,这些占位符会由页面布局上匹配区域中的内容进行填充。 页面布局通常基于自定义内容类型。 内容类型定义您想要在页面上显示的自定义内容字段。 通常,您将创建一个自定义内容类型,其中包含一些将映射到您或您的设计团队预先规划的页面设计的字段。

自定义字段控件可以包括文本、图像、视频或其他内容类型。 SharePoint 提供了文章、目录、欢迎页面等内容类型。 通过转至“网站设置”>“网站内容类型”访问页面布局内容类型。 这些默认页面布局内容类型可用作创建自定义内容类型的父内容类型。

所有页面布局内容类型均继承自页面内容类型。 创建自定义内容类型之后,SharePoint 将显示新内容类型从页面内容类型继承的列。 您可以添加新网站栏来表示您想要在您的页面布局中显示的新自定义字段。 指定每个网站栏的类型。 一种类型是一个值,如"single line of text"或"Full HTML"。 在指定类型时,请考虑诸如应向用户提供的对字段的描述程度或控件之类的因素。

创建完将内容存储在页面布局中的所有字段后,你可以在设计管理器中创建页面布局。 有关详细信息,请参阅在 SharePoint 中创建页面布局

创建页面布局后,通过转至“网站设置”>“母版页和页面布局”进行发布。 存在一个 HTML 文件和一个 ASPX 文件。 HTML 文件是主文件,你可以使用任何 HTML 编辑器对其进行编辑。 保存该文件并将其发布后,设计管理器会合并更改,并将更新后的 HTML 文件转换为 ASPX 格式,SharePoint 将使用这种格式来呈现页面。 若要发布页面布局,请选择 HTML 文件并在功能区中选择“发布”

若要创建基于新布局的页面,请转至“新建页面”>“页面”>“页面布局”以在可用的页面布局的列表中查看新的页面布局。 选择新的页面布局时,你应看到你在创建新的页面布局的新内容类型时所指定的所有新字段。 如果你在查看页面时发现 HTML 未按你需要的方式进行呈现,则可以编辑 HTML,然后使用设计管理器上载已更新的文件。

有四种网站导航的类型:

  • 全局导航
  • 本地导航
  • 结构化导航
  • 托管导航

全局导航是指可帮助用户从一个 SharePoint 网站移动到另一个 SharePoint 网站的导航元素。

本地导航是指在 SharePoint 网站内导航。

更多地介绍了结构化导航和托管导航。

结构化导航

结构化导航是一种在 SharePoint 网站上实现导航的静态方法。 它通常要匹配公司的结构,这就需要重新构建 SharePoint 网站导航。 重新构建工作通常意味着移动子网站和/或页面,并刷新指向新目标的链接。

如果你的公司结构(进而是网站结构)长期保持稳定,结构化导航对于比较平面、较浅的网站结构可能就足够用了。 对于更深入、更复杂的网站结构和具有发布网站导航结构的需要不断成长和变化的公司来说,托管导航可能是更好的选择。

有关结构化导航的详细信息,请参阅如何:在 SharePoint Server 2010 中自定义导航

托管导航

托管导航是在核心发布网站和分类基础结构的基础上生成的。 托管导航绑定到单个网站集。 它使用术语集和术语定义全局和本地导航。 例如,您可以创建整体定义全局导航的术语集,然后将术语添加到该术语集中,用于全局导航中特定的导航元素。

可以在以下文章找到有关托管导航的详细信息:

下面是发布网站的 SharePoint 导航可扩展性模型中有关类、方法和属性的一些高级要点:

  • NavigationTermNavigationTermSet 类添加特定于托管导航的属性和方法。 其他状态存储在 NavigationTerm 类的 CustomProperties 属性中。
  • NavigationTermNavigationTermSet 类有两种模式:可编辑和只读。 在 .NET 服务器对象模型中, NavigationTerm 对象存储在分类导航缓存中,仅可由 TaxonomyNavigation 静态类中的函数对其进行访问。
  • .NET 服务器对象模型中的 PortalSiteMapNodeProvider 对象提供数据驱动的网站导航功能与站点地图数据源之间的接口。 通常,您编写自定义站点地图节点提供程序,以将站点地图存储为 XML 文件或存储为默认情况下不受 SharePoint 支持的数据格式。

CSOM 包括某些唯一的类和枚举:

  • NavigationLinkType 枚举可定义导航树中导航节点的类型。 可以将节点指定为根节点、友好 URL 或标准链接。
  • StandardNavigationScheme 枚举可将导航标识为全局或本地导航。
  • StandardNavigationSource 枚举包括同时用于全局导航和本地导航的三个选项。 每个选项都表示一个对应于基础提供程序的配置的状态。
  • StandardNavigationSettings 类管理全局和本地导航方案。

下表列出了服务器对象模式及其 CSOM 等效模式中的发布导航类。

表 3. 发布导航类

服务器对象模型 CSOM
Microsoft.SharePoint.Publishing.Navigation.CachedObjectSiteMapNode 不适用。
Microsoft.SharePoint.Publishing.Navigation.NavigationComparer 不适用。
不适用。 Microsoft.SharePoint.Client.Publishing.Navigation.NavigationLinkType
Microsoft.SharePoint.Publishing.Navigation.NavigationTerm Microsoft.SharePoint.Client.Publishing.Navigation.NavigationTerm
不适用。 Microsoft.SharePoint.Client.Publishing.Navigation.NavigationTermCollection
Microsoft.SharePoint.Publishing.Navigation.NavigationTermSet Microsoft.SharePoint.Client.Publishing.Navigation.NavigationTermSet
Microsoft.SharePoint.Publishing.Navigation.NavigationTermSetItem Microsoft.SharePoint.Client.Publishing.Navigation.NavigationTermSetItem
Microsoft.SharePoint.Publishing.Navigation.NavigationTermSetView Microsoft.SharePoint.Client.Publishing.Navigation.NavigationTermSetView
Microsoft.SharePoint.Publishing.Navigation.PortalHierarchicalDataSourceView 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalHierarchicalEnumerable 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalHierarchyData 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalListItemSiteMapNode 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalListSiteMapNode 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalNavigation 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapDataSource 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapDataSourceSwitch 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapNode 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider 不适用。
Microsoft.SharePoint.Publishing.Navigation.PortalWebSiteMapNode 不适用。
Microsoft.SharePoint.Publishing.Navigation.ProxySiteMapNode 不适用。
Microsoft.SharePoint.Publishing.Navigation.SiteNavigationSettings 不适用。
Microsoft.SharePoint.Publishing.Navigation.SiteNavigationSettingsWriter 不适用。
Microsoft.SharePoint.Publishing.Navigation.SPNavigationSiteMapNode 不适用。
不适用。 Microsoft.SharePoint.Client.Publishing.Navigation.StandardNavigationSource
不适用。 Microsoft.SharePoint.Client.Publishing.Navigation.StandardNavigationSettings
Microsoft.SharePoint.Publishing.Navigation.TaxonomyNavigation Microsoft.SharePoint.Client.Publishing.Navigation.TaxonomyNavigation
Microsoft.SharePoint.Publishing.Navigation.TaxonomyNavigationCacheConfig 不适用。
Microsoft.SharePoint.Publishing.Navigation.TaxonomyNavigationCacheStatistics 不适用。
Microsoft.SharePoint.Publishing.Navigation.TaxonomyNavigationContext 不适用。
Microsoft.SharePoint.Publishing.Navigation.TaxonomySiteMapNode 不适用。
Microsoft.SharePoint.Publishing.Navigation.TaxonomySiteMapProvider 不适用。
Microsoft.SharePoint.Publishing.Navigation.WebNavigationSettings Microsoft.SharePoint.Client.Publishing.Navigation.WebNavigationSettings

发布网站功能

SharePoint 和 SharePoint Online 包括特定于 SharePoint 发布网站的几个功能:

  • 设备通道让你可以将单个发布网站设计应用于多个设备和浏览器。
  • 显示模板可以实现品牌化和自定义与搜索相关的 Web 部件的外观。
  • 图像呈现形式定义用于在 SharePoint 发布网站的网页上显示图像的尺寸。

你可以通过使用 CSOM 编程模型的发布命名空间中的类来实现这些功能。

设备通道和设备通道模板

可以使用设备通道和设备通道面板来针对手机和平板电脑优化网站。 通过为作为目标的每个设备创建唯一的通道,可以通过多种方式呈现 SharePoint 发布网站。 可以一次创作一个网站,然后将该站点及其内容映射到不同的母版页和样式表以适应不同的目标。

通过使用 设计管理器创建通道。 创建通道后,可以使用传入设备的用户代理字符串将其映射到移动设备或浏览器中。

设备可以归属于多个通道。 在这种情况下,可以对设备所属的通道进行排名。 例如,如果您创建针对智能手机的通道和针对特定设备配置的通道,您可以对这些通道进行排名,以便具有该特定配置的设备能够获取它们的通道,并且所有其他智能手机能够获取智能手机通道。

您可以在设计管理器中创建最多 10 个通道(包括默认通道)。 默认通道将捕获其他通道中未捕获的所有流量。 当您创建新通道时,请完成下表中列出的字段。

表 4. 设备通道

字段 必需还是可选? 说明
Name 必需 标识要将其与其他通道区分开来的通道。
通道别名 必需 代码、查询字符串、cookie 或设备通道面板如何区分通道之间的差异。
设备包含规则 必需 直接从设备(每个设备应位于不同行上)请求的用户代理子字符串。
说明 可选 描述此通道所执行的操作。
可用 可选 选中后,通道将使用通道的相关资产来定向流量。否则,查询字符串 ?DeviceChannel=<alias> 在通道中预览站点。

设备通道面板

创建设备通道后,将母版页互相映射。 由于母版页自定义项越来越少,这通常是默认母版页 (seattle.master)。 如果为一个或多个设备通道创建唯一的母版页,可以为默认通道引用母版页之外的 CSS 文件。 你创建的页面布局会使用你创建的每个通道。 可以使用设备频道面板控件区分通道之间的页面布局设计。

有关详细信息,请参阅在 SharePoint 中添加设备通道面板代码段

设备通道面板是映射到一个或多个通道的容器控件。 您可以将设备通道面板控件添加到页面布局中,该面板将控制每个通道中呈现的内容。 当呈现页面时有一个或多个通道处于活动状态,那么将呈现该设备通道面板中的所有内容。 设备通道面板可用于确定何时包括一个或多个特定通道的特定内容。

请考虑包含十个字段的页面布局。 这些字段中有一些可用于所有通道,有一些则只在特定通道中呈现。 例如,考虑仅在智能手机上呈现的移动标题横幅字段,或只呈现在台式机和平板电脑上的大型自定义边栏。

还可以使用设备通道面板,通过添加特定于通道的 CSS 来更改页面上的的样式和内容放置。

有关详细信息,请参阅在 SharePoint 中使用 CSS 标记代码片段

用户代理字符串和设备通道

用户代理字符串是用于标识浏览器的一个小型数据字符串。 此信息可以发送到服务器,它将识别用户代理。 设备通道基于用户从中进行浏览的设备(或浏览器)的用户代理字符串(或子字符串)将请求分配到对应的设备通道。 前端 Web 开发人员创建并设置通道以捕获流量。

有关详细信息,请参阅 Windows Internet Explorer 将什么报告为用户代理字符串?

设备通道的解析顺序

当您创建多个通道时,按照您要处理的顺序对它们进行排序。 使用其中包括匹配用户代理字符串的设备包含规则的第一个通道。 下表显示了此规则的一个示例。

表 5. 设备包含规则示例

通道 顺序 1 顺序 2
1 Windows Phone 8 Windows Phone
2 Windows Phone Windows Phone 8
3 默认值 默认

如果顺序 1 处于活动状态,则从 Windows Phone 8 请求页面的用户将收到标记为 Windows Phone 8 的设备通道 1。 拥有任何其他 Windows Phone 的用户将使用通道 2,其他任何流量将使用通道 3。 但是,使用顺序 2,从 Windows Phone 8 请求页面的用户将始终收到标记为 Windows Phone 的设备通道 1,永远不会使用为它指定的设备通道。

定义和排序设备通道后,您可以将不同母版页应用于每个通道中。 默认情况下,所有通道都将使用默认通道的母版页。

注意

CSOM 不包括用于控制设备通道和设备通道面板的公用 API。

显示模板

SharePoint 发布网站使用显示模板控制搜索结果中显示的托管属性及其在 Web 部件中的显示方式。 只有搜索 Web 部件使用显示模板。内容查询 Web 部件不是搜索 Web 部件,因此不使用显示模板。

下表以 SharePoint 应用这些模板的顺序列出了显示模板的类型。

表 6. 显示模板的类型

显示模板 说明
控件显示模板 应用于整个 Web 部件,因此 SharePoint 首先应用它,并且仅应用一次。它提供构建用于显示搜索结果的整体布局的 HTML。例如,控件显示模板可能会为列表的标题和开头和结尾提供 HTML。此模板仅在 Web 部件中呈现一次。
组显示模板 第二个应用,每个组应用一次,用于搜索结果 Web 部件。
项目显示模板 除非应用了筛选器显示模板,否则最后应用。项显示模板将应用于每个项。此模板确定结果集中每个项在 Web 部件中的显示方式。例如,它可以为纯文本列表项、包含图片的列表项或设置附加链接块和摘要说明信息的列表项提供 HTML,以帮助为搜索结果提供更多上下文。

SharePoint 将显示模板存储在母版页库中的“显示模板”文件夹中。每个显示模板都与母版页中的内容类型相关联,Gallery.To 在使用映射驱动器时标识每个显示模板文件的内容类型,请使用文件名。

转换并将母版页和页面布局从 HTML 更新到 JavaScript 的事件接收器还会将显示模板从 HTML 转换到 Javascript。 转换和正在进行的同步是单向进行的;它不会从 JavaScript 转换回 HTML。

注意

CSOM 不包括用于控制显示模板的公用 API。

显示模板结构

每个显示模板包含:

  • 一个标题。
  • 一个包含由 <mso:CustomDocumentProperties> 标记绑定的自定义元素的标头。
  • 一个包含脚本块的 <body> 标记。
  • 一个 <div> 标记。

自定义文档属性向 SharePoint 提供有关显示模板的重要信息。 每个显示模板都由 <ContenTypeId> 标识的一个内容类型相关联。 你可以设置其他属性,以确定是在 Web 部件的可用显示模板列表中隐藏还是显示模板、用于 JavaScript 托管属性映射的 HTML,以及在其中使用显示模板的上下文;确定 .js 文件当前是否与显示模板 HTML 相关联、是否成功从 HTML 转换到 JavaScript,或是否产生了警告和错误。

<script> 标记内部,你可以引用外部 CSS 或主显示模板 HTML 文件以外的 JavaScript 文件。

如果母版页样式库中要求进行内容审批,则必须先发布所有 CSS、JavaScript 和其他资源文件,然后才能在母版页和页面布局中使用它们。

有关详细信息,请参阅要求审批网站列表或库中的项

<div> 标记包含一个与显示模板 HTML 文件的名称相匹配的 ID。 将想要包含的用于自定义此 Web 部件的显示方式的 CSS 或 JavaScript 放在 <div> 块中。

显示模板处理

SharePoint 在 HTML 文件和 JavaScript 中定义显示模板。 如果你在设计管理器中更改包含显示模板定义的 HTML 文件并保存做的更改,SharePoint 会将更改编译到具有相同名称的 JavaScript 文件。 SharePoint 使用此 JavaScript 文件在页面上呈现 Web 部件。

重要

不要编辑包含显示模板定义的 JavaScript 文件。 仅更新 HTML 文件。 转换过程需要 HTML 文件符合 XML 规范。 例如,使用 <br>,而非使用 <br/>。 有关详细信息,请参阅在 SharePoint 中将 HTML 文件转换为母版页

新建显示模板

新建显示模板的最简单方式是修改现有模板。 不同的显示模板更改与搜索相关的不同的 Web 部件的外观,包括内容搜索 Web 部件、精简 Web 部件、分类精简 Web 部件和搜索结果 Web 部件。

有关详细信息,请参阅:

可以在显示模板中使用的属性

在开始确定在显示模板中可以使用的属性之前,找到您想要由此生成的现有显示模板,然后使用新名称将其保存。 显示模板代码位于 标记中 <mso:ManagedPropertyMapping>

<mso:ManagedPropertyMapping msdt:dt="string">'Picture URL'{Picture URL}:'PublishingImage;PictureURL;PictureThumbnailURL','Link URL'{Link URL}:'Path','Line 1'{Line 1}:'Title','Line 2'{Line 2}:'Description','Line 3'{Line3}:'','SecondaryFileExtension','ContentTypeId'</mso:ManagedPropertyMapping>

接下来,打开“网站设置”>“搜索架构”,然后搜索你想要包含在显示模板中的托管属性筛选器框中的列名称。 选择托管属性,然后编辑并复制属性名称。

<mso:ManagedPropertyMapping msdt:dt="string">'Picture URL'{Picture URL}:'PublishingImage;PictureURL;PictureThumbnailURL','Link URL'{Link URL}:'Path','Line 1'{Line 1}:'Title','Line 2'{Line 2}:'Description','Line 3'{Line3}:'','owsTXTPrice','owsTXTColor'</mso:ManagedPropertyMapping>

注意

在此示例中,PictureURL 映射到首个托管属性,此属性在搜索功能获取 PublishingImagePictureURLPictureThumbnailURL 的结果时出现。

图像呈现形式

图像呈现形式定义用于在 SharePoint 发布网站的网页上显示图像的尺寸。 可以使用 CSOM 实例化和操作图像呈现形式。 可通过使用 ImageRendition 类指定图像呈现形式的高度、宽度、名称和版本等元数据。 可以使用 SiteImageRenditions 类中方法和属性从网站集读取和写入图像呈现形式。

有关详细信息,请参阅 SharePoint 设计管理器图像呈现形式

SharePoint 和 Web 编程技术

SharePoint 设计和开发人员在设计发布网站时,经常想要将标准 Web 编程技术与 SharePoint 结合使用。 你可以使用响应式设计、自适应设计或同时使用设备通道和响应式设计。

响应式设计

利用设备通道,可以一次构建网站,然后将其指定到多个设备和浏览器。 Web 开发社区通常使用反应迅速的设计和"流体网格"方法来管理布局的呈现方式并设计正确呈现在任何浏览器或设备上的网站。 在快速响应设计中,页面上的元素将重新排列自身来满足用户的设备和屏幕方向。

快速响应设计基于 CSS3 中的媒体查询功能。 它使用媒体查询来匹配设备的显示宽度,然后将样式应用在客户端上来呈现内容。 媒体查询让设计人员能够指定特定的网站属性,如屏幕宽度。 可以使用媒体查询创建灵活的布局和图像,并有条件地调用 CSS 文件的备选方法。

有关详细信息和示例,请参阅

自适应设计

自适应 Web 设计(有时称为自适应 Web 传递)类似于快速响应 Web 设计。 自适应设计侦听设备或浏览器,并且选择最佳的方式呈现页面。

SharePoint 中的设备通道功能是一种自适应设计。 它基于页面布局、每个设备通道的规格和在设备通道面板中定义的顺序,将自适应布局传递到每个设备。

设备通道与响应式设计一起

你可以结合使用设备通道和响应式 Web 设计技术,构建面向公众响应式 SharePoint 发布网站。 请考虑为设备(例如手机和平板电脑)创建单个自定义母版页,为 Web 浏览器创建另一个自定义母版页,并将每个母版与设备通道相关联。 然后,使用流畅的网格、灵活的图像和 CSS3 媒体查询,为你的网站需要支持的每个设备和浏览器精心打造最佳的视觉体验。

将 jQuery 添加到 SharePoint 网站

你可以在网站级别、页面级别,或页面的各部分(如某个 SharePoint 页面区域或已添加到页面布局的 Web 部件)中将 jQuery 添加到 SharePoint 网站。

您可以使用自定义操作,从文档库中加载 jQuery。 如果您需要使 jQuery 对 SharePoint 网站中的所有页均可用,则执行此操作。 此方法非常灵活,但难于控制,并且会影响到的网站设计人员和管理员。 您可以在文档库中存储和维护 JavaScript文件,但它们也会意外被修改或删除。 为此,我们不建议此方法。

也可以通过使用 ScriptLinkControl 从 SharePoint 根加载 jQuery。 可以使用控件插入在远程站点上运行的脚本,并修改脚本而不改动 SharePoint 安装。 当你想要在应用程序页上或页面上显示的 Web 部件中使用 jQuery 时,ScriptLinkControl方法很有用。 虽然使用此选项进行预配比较缓慢,并且会影响性能,因为 jQuery 一次只能添加到一个页面,但将 jQuery 文件部署到 SharePoint 规则避免了其他旧版要求。 如果需要将 SharePoint 完全信任代码 (FTC) 解决方案迁移到 CSOM,并且迁移包括移动和重构自定义 JavaScript 和 jQuery 行为,此操作很有用。

最后,你可以使用内容编辑器 Web 部件从内容交付网络 (CDN) 加载 jQuery。 如果你需要将 jQuery 添加到一个或几个页面,包括 Wiki 和 Web 部件页,这会很有用。 由于正在从 CDN 加载 jQuery 文件,因此无需在 SharePoint Server 上存储额外的文件,并且用户将获得 jQuery 文件的分布式缓存版本的好处。 SharePoint 从 CDN 调用 jQuery 文件,并且你可以将你创作的自定义 jQuery 代码添加到内容编辑器 Web 部件。

使用 ASP.NET MVC 5 构建 SharePoint 提供程序托管的外接程序

您可以使用 SharePoint 中的模型-视图-控制器 (MVC) 模式构建自定义提供程序托管的外接程序。 此模型可将应用程序分为三个互连的部分。 这将依据用户查看和接受的方式对信息的内部表示形式进行划分。 模型表示软件、视图(通常为 UI 元素)和控制器(它们是连接模型和视图的类)的基础结构。

你可以将 ASP.NET MVC 内容包装在 SharePoint 网站母版页内容中。 实际上,可以使用 Office 365 API 与 ASP.NET MVC 5 一起创建 SharePoint 外接程序。

用于 SharePoint 开发的 MVC 的 API 在 Filters\SharePointContextFilterAttribute.csSharePointContext.cs 中进行定义。 这些 API 包装 Web 项目为在单个调用中实现与 SharePoint 的无缝通信所采取的步骤,从而简化你需要实现的逻辑。

当从 SharePoint 重定向到您的远程 Web 应用程序(如主机 Web URL)时,SharePoint 上下文筛选器属性执行额外的处理,以获取标准的信息。 它还可以确定外接程序是否需要被重定向到 SharePoint,以供用户进行登录(例如,书签)。 您可以将此筛选器应用到控制器或到视图。 SharePoint 上下文类封装所有 SharePoint 中的信息,以便您可以创建外接程序 Web 和主机 Web 的特定上下文并与 SharePoint 进行通信。

有关详细信息,请参阅了解 ASP.NET MVC引入对 SharePoint 外接程序的 MVC 支持

另请参阅