Pergunta

salvete!É possível adicionar uma WebPart a uma página inicial da Wiki via PowerShell?Eu tenho 100 sites para os quais preciso adicionar uma peça na web às suas páginas caseiras.Eu sei que isso é facilmente possível com páginas normais da Web Part, mas como sobre uma página wiki-home?

Foi útil?

Solução

Yes, it's possible. I had a blog post on this very topic, but the blog site has since been deactivated. Basically you do it like you would add a web part to any other Web Part Page. When it's time to specify the zone, use the "wpz" zone. Also, you need to add some markup to the Page's "WikiField" that resembles this (substituting your Web Part ID Guid where appropriate):

<div class="ms-rtestate-read ms-rte-wpbox">
  <div class="ms-rtestate-read {webpart ID guid}"
       id="div_{webpart ID guid}">
  </div>
  <div class="ms-rtestate-read"
       id="vid_{webpart ID guid}"
       style="display: none">
  </div>
</div>

This posting was similar to the content I presented in my (now deleted) posting: http://blog.mastykarz.nl/inconvenient-provisioning-web-parts-wiki-pages-sandboxed-solutions/

Outras dicas

Below Code Reads the SiteUrls from Text file called SiteUrls.txt, and add library called "Oct Invoicing 2014" to the Wikipage called "Billing_Req.aspx"

Here we are taking variable i to check for the library already present on the page, if present we are incrementing i to 1 and else its default value =0

If i=0 means webpart is not present on the page and it will be added on the page.

in All the cases we are writing the output to D:\Webpartoutput.txt.

cls 

asnp "*sh*"

$file=Get-Content -Path D:\SiteUrls.txt

foreach($url in $file)
 {

$web= Get-SPWeb -Identity $url

$listName = "Oct Invoicing 2014"

$pageUrl= $web.GetFile("SitePages/Billing_Req.aspx");

if($pageUrl.Exists)
{

    try
     {

    $i=0; 

    $webpart = New-Object Microsoft.SharePoint.WebPartPages.XsltListViewWebPart

    $list=$web.Lists.TryGetList($listName)

    $webpart.ListId = $list.ID

    $webpart.ViewGuid = ($list.DefaultView.ID).ToString("B").ToUpper()  

    $webpartmanager=  $web.GetLimitedWebPartManager($pageUrl,[System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)

    foreach($wpt in $webpartmanager.WebParts)
    {

         if($wpt.ListId -eq $list.ID)
         {
         $i=$i+1;
         break;

         }
    }

    if($i -eq "0")
    {

        $webpartmanager.AddWebPart($webpart,"",0)

       "Webpart Added Successfully" + $url + " " + $webpart.Title |  Out-File   -Append -FilePath D:\WebpartOuPut.txt
     }
     else
      {
         " Dude Webpart is already present on the site  : " + $url |  Out-File -Append -FilePath D:\WebpartOuPut.txt 
      }
  }

  catch [Exception]
      {

   $url + $_.Exception.Message | Out-File -Append -FilePath D:\WebpartOuPut.txt 
     }
    }
          else
    {
    "Page Url is invalid or not existing  : " + $url  | Out-File -Append -FilePath D:\WebpartOuPut.txt 
    }
 }

More details in my blog

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top