如何将 WebPart 添加到 SharePoint 网站中的所有页面?

Posted

技术标签:

【中文标题】如何将 WebPart 添加到 SharePoint 网站中的所有页面?【英文标题】:how to add a WebPart to all pages in a SharePoint site? 【发布时间】:2010-12-23 17:20:31 【问题描述】:

我将 SharePint Server 2007 Enterprise 与 Windows Server 2008 Enterprise 一起使用,并且我正在使用发布门户模板。我正在使用 VSTS 2008 + C# + .Net 3.5 进行开发。我想知道如何将 WebPart 添加到 SharePoint 网站的所有页面?有参考样本吗?

我想用这个WebPart在所有页面上显示一些常用的信息(但信息可能会动态变化,这也是我选择WebPart的原因)。

【问题讨论】:

【参考方案1】:

根据您的情况,有两种方法可以做到这一点。

如果站点已经存在,则需要遍历站点,添加 Web 部件:

http://blogs.msdn.com/tconte/archive/2007/01/18/programmatically-adding-web-parts-to-a-page.aspx

如果站点不存在,则可以将 Web 部件添加到站点模板:

How to add a web part page to a site definition?

【讨论】:

我需要将 WebPart 添加到现有站点。我阅读了第一篇文章的代码。它提到了如何添加文档库 Web 部件,但是如何添加自定义开发的 Web 部件?【参考方案2】:

这里是 Shiraz 的第一个链接的代码:

(注意:此代码未优化,例如,循环遍历 List 的 Items 集合不是您通常应该做的事情,但鉴于这可能是一次性操作,所以没有问题)

private void AddCustomWebPartToAllPages()

  using(SPSite site = new SPSite("http://sharepoint"))
  
    GetWebsRecursively(site.OpenWeb());
  


private void GetWebsRecursively(SPWeb web)

  //loop through all pages in the SPWeb's Pages library
  foreach(var item in web.Lists["Pages"].Items)
  
    SPFile f = item.File;
    SPLimitedWebPartManager wpm = f.GetLimitedWebPartManager(PersonalizationScope.Shared);

    //ADD YOUR WEBPART
    YourCustomWebPart wp = new YourCustomWebPart();
    wp.YourCustomWebPartProperty = propertyValue;
    wpm.AddWebPart(wp, "ZONEID", 1);
    f.Publish("Added Web Part");
    f.Approve("Web Part addition approved");
  
  // now do this recursively
  foreach(var subWeb in web.Webs)
  
    GetWebsRecursively(subWeb);
  
  web.Dispose();

【讨论】:

以上是关于如何将 WebPart 添加到 SharePoint 网站中的所有页面?的主要内容,如果未能解决你的问题,请参考以下文章

Webpart 功能未添加说明

使用 WSPBuilder 将 JavaScript、CSS 和其他内容添加到 WebPart

在现代站点中添加 SPFx webpart 时的 Javascript

如何在单个 spfx 解决方案中创建两个 webpart?

如何临时禁用 SharePoint Webpart?

SharePoint Office365 Powershell Webpart AllItems.aspx