SharePoint Online 全宽页面

Posted

技术标签:

【中文标题】SharePoint Online 全宽页面【英文标题】:SharePoint Online full width page 【发布时间】:2019-01-31 06:44:05 【问题描述】:

我仍在探索 SharePoint Online 创建 Web 部件并使用 Typescript 通过 Visual Studio 代码进行部署。

我创建了一个 HelloWorld webpart 并将其上传到页面上。我能够创建包文件,将其上传到 App-Catalog,安装并添加到页面。

一旦它在页面上,它不会占用整个页面,并且在页面布局部分我无法看到全宽选项。

从下面的截图可以看出,我的 webpart 位于页面的中心,而我想要的是它应该是全角的,它应该占据整个页面。

在部分布局中,缺少全宽选项。

任何人都可以建议我或给我有关如何使用 SPFX 在 SharePoint Online 中创建整个页面 web 部件的提示。

【问题讨论】:

【参考方案1】:

既然您已经打包并上传了。你不能在 SPO 网站上做到这一点。您需要编辑 manifest.json 文件。您可以添加 "supportsFullBleed": true 为您的 Web 部件启用全宽列。并再次打包、上传并安装到目录中。

这样做的缺点是无法在本地工作台中测试全宽 Web 部件。你必须在网上的SP上做。你可以找到参考here。


  "$schema": "https://dev.office.com/json-schemas/spfx/client-side-web-part-manifest.schema.json",
  "id": "34f6d7f2-262f-460a-8b65-152d784127cb",
  "alias": "HelloWorldWebPart",
  "componentType": "WebPart",

  // The "*" signifies that the version should be taken from the package.json
  "version": "*",
  "manifestVersion": 2,

  // If true, the component can only be installed on sites where Custom Script is allowed.
  // Components that allow authors to embed arbitrary script code should set this to true.
  // https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f
  "requiresCustomScript": false,
  "supportsFullBleed": true,

  "preconfiguredEntries": [
    "groupId": "5c03119e-3074-46fd-976b-c60198311f70", // Other
    "group":  "default": "Other" ,
    "title":  "default": "HelloWorld" ,
    "description":  "default": "HelloWorld description" ,
    "officeFabricIconFontName": "Page",
    "properties": 
      "description": "HelloWorld"
    
  ]

您还可以使用 SharePoint 2013 和 Office 365 中默认存在的 Oslo 母版页。要更改母版页,如果您使用协作网站,则需要激活发布功能,并且需要使用自定义 css删除多余的边距。

.contentwrapper 
margin: 0;


#titleAreaBox 
margin: auto 20px!important;
  

【讨论】:

我已经将 'supportsFullBleed' 属性设置为 true 但仍然没有用。 @salah9 您在使用协作网站吗?如果是这样,您需要通过激活发布功能来更改主控。并且需要一些自定义 CSS 来删除额外的边距。已更新答案。 我创建了子站点作为发布站点并添加了相同的 webpart,效果很好。 为了在工作台中进行测试:您可以添加一个在启动 Web 部件时导入的纯 .css 文件,其中包含以下内容:#workbenchPageContent margin: 0; max-width: none; 这将使页面(几乎)完整用于测试的页面宽度。请确保在发布时删除导入。【参考方案2】:

以下提示在官方文档中:

目前,SharePoint Workbench 不支持在全宽列布局中测试 Web 部件。相反,您必须将 Web 部件部署到开发人员租户、创建通信站点并在那里测试您的 Web 部件。

如果你完成了上面的操作,你可以看到mainfest.json文件夹中有"supportsFullBleed": true。没有的可以添加。

参考链接:

https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/basics/use-web-parts-full-width-column

【讨论】:

【参考方案3】:

您可以递归地修复workbenchPageContent 下方(以及您的网络部件上方)所有元素的填充和边距。

(这是一个骇人听闻的解决方案,但似乎效果很好)

componentDidMount 内部调用以下函数可以解决工作台中的所有问题,如果您使用supportsFullBleed,则在部署时不会有任何问题。

function fixWorkbench(elem?: any, depth: number = 0) 
  if (!elem && depth === 0)
    elem = document.getElementById("workbenchPageContent");
  if (!elem || depth > 20) return null;
  elem.style.padding = "0px 0px 0px 0px";
  elem.style.margin = "0px 0px 0px 0px";
  Array.from(elem.children).map(child => fixWorkbench(child, depth + 1));

【讨论】:

以上是关于SharePoint Online 全宽页面的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Teams 中嵌入SharePoint Online 页面

Microsoft Teams 中嵌入SharePoint Online 页面

SharePoint Online 定制表单页面

如何使用 PnP 配置引擎在 SharePoint Online 中配置发布页面?

SharePoint Online 为Modern Page添加脚本

SharePoint Online 为Modern Page添加脚本