Add custom and listview web part to wiki page using powershell

18 篇文章 0 订阅
7 篇文章 0 订阅

As we know, Adding list view web part is different from custom web part using powershell, what's more, there are also difference between adding web part to web part zone page and wiki pag. here is the method.

1. Add custom web part to wiki page:

Note: because of custom web part, we couldn't new the web part via new-object Microsoft.SharePoint.WebPartPages.XsltListViewWebPart, had to get the web part from the folder of the web part catalog. first, we should get the custom web part via name in the web part folder, second, read the custom via OpenBinaryStream() method and import the file to web part object.

And, because of add web part to wiki page, the wiki page didn't have web part zone, but it has the hide zone named "WPZ", after adding web part to the wiki page, we still couldn't see it, the reason is that the wiki page is reloadey by the html code, we had to re-write the html:

<div class="ms-rtestate-read ms-rte-wpbox" contenteditable="false" style="float:left;width:30&%;min-width:300px;">
 <div class="ms-rtestate-notify  ms-rtestate-read $($lvwpGuid)" id="div_$($lvwpGuid)" unselectable="on"></div>
 <div id="$($lvwpGuid) " unselectable="on" style="display: none"></div>
</div>

so we just change the id of div, then we will get the result. 

Here is the function:

 Call the function : AddCustomWebPart http://localhost "SitePages/Home.aspx" "TrendingTagsWebPart_TrendingTags.webpart" "Trending Tags"

function AddCustomWebPart($siteCollectionUrl, $pageUrl, $webPartName, $title){
  
$site = new-object Microsoft.SharePoint.SPSite($siteCollectionUrl); 
$web = $site.OpenWeb() 
$defaultPage = $web.GetFile($pageUrl)
$item = $defaultPage.Item

#Create fancy GUID
$lvwpGuid = [System.Guid]::NewGuid().ToString()
$lvwpKey = "g_" + $lvwpGuid.Replace("-","_")
$errorMsg = ""  

[Microsoft.SharePoint.SPList]$wpList = $site.GetCatalog([Microsoft.SharePoint.SPListTemplateType]::WebPartCatalog) 
[Microsoft.SharePoint.SPFolder]$wpFolder = $wpList.RootFolder
[Microsoft.SharePoint.SPFile]$wpFile = $wpFolder.Files[$webPartName]
[System.Xml.XmlReader]$xmlReader = [System.Xml.XmlReader]::Create($wpFile.OpenBinaryStream()) 
[Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager]$wpManager = $defaultPage.GetLimitedWebPartManager([System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)   

$myCustomWP = $wpManager.ImportWebPart($xmlReader,[ref]$errorMsg) 
$myCustomWP.ID = $lvwpKey
$myCustomWP.Title = $title
$wpManager.AddWebPart($myCustomWP, "WPZ", 0); 
#if you wan to add the web part to web part zone page instead of wiki page, you just need to change the value "WPZ" to the zone # name you want, and the follow code wiil be not added. The same to add list view  web part to wiki page
# Add the HTML content and web part containers to the page.
 $wikiContent = @"

<div class="ms-rtestate-read ms-rte-wpbox" contenteditable="false" style="float:left;width:30&%;min-width:300px;">
 <div class="ms-rtestate-notify  ms-rtestate-read $($lvwpGuid)" id="div_$($lvwpGuid)" unselectable="on"></div>
 <div id="$($lvwpGuid) " unselectable="on" style="display: none"></div>
</div>

"@

#wiki content is stored in the field “Wiki Content”
$item["WikiField"] = $wikicontent
$item.Update()
$xmlReader.Close() 
$web.Dispose() 
$site.Dispose()   
write-host "Done"
}


1. Add list view  web part to wiki page:

call the function :

AddWebPartToWiki http://localhost "SitePages/Home.aspx" "Links" "LinkOne"

function AddWebPartToWiki($siteCollectionUrl, $pageUrl, $listName, $viewName){
$web = get-spweb $siteCollectionUrl
$list = $web.Lists[$listName]
$wpPage = $web.GetFile($pageUrl)
$item = $wpPage.Item

# Get the LimitedWebPartManager
$webpartmanager=$wpPage.GetLimitedWebPartManager([System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)

#Create fancy GUID
$lvwpGuid = [System.Guid]::NewGuid().ToString()
$lvwpKey = "g_" + $lvwpGuid.Replace("-","_")

# Instantiate wp
$lvwp = new-object Microsoft.SharePoint.WebPartPages.XsltListViewWebPart
$lvwp.ID = $lvwpKey
$lvwp.WebID = $web.ID;
$lvwp.ChromeType = "TitleOnly";
$lvwp.Title = "Your Title"; 
#$lvwp.TitleUrl = "http://dev-sp";
$lvwp.Toolbar = "No Toolbar";
$lvwp.ListID = $list.ID;
$lvwp.ListName = $list.ID.ToString();

# Set the view
$lvwp.ViewGuid = $list.Views[$viewName].ID.ToString();

# Add the web part
$webpartmanager.AddWebPart($lvwp, "WPZ", 0);

# Add the HTML content and web part containers to the page.
 $wikiContent = @"

<div class="ms-rtestate-read ms-rte-wpbox" contenteditable="false" style="float:left;width:30%;min-width:300px;">
 <div class="ms-rtestate-notify  ms-rtestate-read $($lvwpGuid)" id="div_$($lvwpGuid)" unselectable="on"></div>
 <div id="$($lvwpGuid) " unselectable="on" style="display: none"></div>
</div>

"@

#wiki content is stored in the field “Wiki Content”
$item["WikiField"] += $wikicontent
$item.Update()
 
# Update the web
$web.Update();
$web.Dispose();
 
write-host "success"
}
 


More to Link: http://soufiane-benyoussef.blogspot.in/2011/09/add-custom-webpart-to-page-using-power.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值