Comment changer la mise en page de la page Wiki dans SharePoint 2010 avec PowerShell?
-
10-12-2019 - |
Question
Je voudrais créer une page wiki à l'aide de PowerShell et souhaiterais définir "Deux colonnes avec en-tête" comme mise en page au lieu de la mise en page "Une colonne" par défaut.Capable de créer la page Cependant, ne savez pas à mettre à jour la mise en page de la page.Veuillez aider.
note: La fonctionnalité de publication n'est pas activée sur le Web.
## Main Sharepoint Site
$site = "http://Webapplication";
## Sharepoint Wiki sub-site
$web = "/subsite";
## Library of Wiki Pages
$Library = "Site Pages";
## Name of the Wiki Pages
$pageName = "NewHomePage.aspx";
## Setup Basic sites and pages
$spSite = Get-SPSite $site;
$spWeb = Get-SPWeb ($site+$web);
$spLibrary = $spWeb.Lists[$Library];
$pageFolder = $spLibrary.RootFolder;
$spWIKIPage = $pageFolder.Files.Add($pageFolder.ServerRelativeUrl +"/" + $pageName, [Microsoft.SharePoint.SPTemplateFileType]::WikiPage);
$spWIKIItem = $spWIKIPage.Item;
$spWIKIItem[[Microsoft.SharePoint.SPBuiltInFieldId]::WikiField] = "Template Preview" ;
$spWIKIItem.UpdateOverwriteVersion();
# Dispose the Objects
$spWeb.Dispose();
$spSite.Dispose();
Cela fonctionne si le contenu HTML est directement ajouté.Cependant, cela fait-il un impact sur la performance?
### Variables ###
## Main Sharepoint Site
$site = "http://webapplication";
## Sharepoint Wiki sub-site
$web = "/subsite";
## Library of Wiki Pages
$Library = "Site Pages";
## Name of the Wiki Pages
$pageName = "NewHomePage.aspx";
## Layout of the Wiki Pages
$pageLayout = '<div class="ExternalClassCFBA8CDC81B34264A81647E2260499B4"><table id="layoutsTable" style="width:100%"><tbody><tr style="vertical-align:top"><td colspan="2"><div class="ms-rte-layoutszone-outer" style="width:100%"><div class="ms-rte-layoutszone-inner"><div class="ExternalClass84D2F659CA274C02B313B2039A7DCEF6">Template Preview</div></div></div></td></tr><tr style="vertical-align:top"><td style="width:49.95%"><div class="ms-rte-layoutszone-outer" style="width:100%"><div class="ms-rte-layoutszone-inner"><div class="ExternalClass84D2F659CA274C02B313B2039A7DCEF6"> </div></div> </div></td><td style="width:49.95%"><div class="ms-rte-layoutszone-outer" style="width:100%"><div class="ms-rte-layoutszone-inner"></div> </div></td></tr></tbody></table><span id="layoutsData" style="display:none">true,false,2</span></div>';
## Setup Basic sites and pages
$spSite = Get-SPSite $site;
$spWeb = Get-SPWeb ($site+$web);
$spLibrary = $spWeb.Lists[$Library];
$pageFolder = $spLibrary.RootFolder;
$spWIKIPage = $pageFolder.Files.Add($pageFolder.ServerRelativeUrl +"/" + $pageName, [Microsoft.SharePoint.SPTemplateFileType]::WikiPage);
$spWIKIPage.Title = $web.Title + " Home Page";
$spWIKIItem = $spWIKIPage.Item;
$spWIKIItem[[Microsoft.SharePoint.SPBuiltInFieldId]::WikiField] = $pageLayout;
$spWIKIItem.UpdateOverwriteVersion();
# Dispose the Objects
$spWeb.Dispose();
$spSite.Dispose();
La solution
Pour spécifier la mise en page de la page lors de la création de la page Wiki Utilisez OOTB SPFIELD PublishingPageLayout
, par exemple:
$wikiPage["PublishingPageLayout"] = "/_catalogs/masterpage/EnterpriseWiki.aspx, Basic Page"
Comment créer une page wiki dans SharePoint 2010
ci-dessous est fourni au code de la création de pages Wiki dans SharePoint 2010:
Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Client.dll'
Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Client.Runtime.dll'
function CreateWikiPage()
{
param(
[Parameter(Mandatory=$true)][string]$webUrl,
[Parameter(Mandatory=$false)][System.Net.NetworkCredential]$credentials,
[Parameter(Mandatory=$true)][string]$pageName,
[Parameter(Mandatory=$true)][string]$pageContent
)
$templateRedirectionPageMarkup = '<%@ Page Inherits="Microsoft.SharePoint.Publishing.TemplateRedirectionPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %> <%@ Reference VirtualPath="~TemplatePageUrl" %> <%@ Reference VirtualPath="~masterurl/custom.master" %>';
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl)
$ctx.Credentials = $credentials
$wikiPages = $ctx.Web.Lists.GetByTitle("Pages")
$load = [Microsoft.SharePoint.Client.ClientContext].GetMethod("Load")
$listLoad = $load.MakeGenericMethod([Microsoft.SharePoint.Client.List])
$listLoad.Invoke($ctx,@($wikiPages,$null))
$ctx.ExecuteQuery()
$file = New-Object Microsoft.SharePoint.Client.FileCreationInformation
$file.Url = $pageName
$file.Content = [System.Text.Encoding]::UTF8.GetBytes($templateRedirectionPageMarkup)
$file.Overwrite = $true
$wikiFile = $wikiPages.RootFolder.Files.Add($file)
$fileLoad = $load.MakeGenericMethod([Microsoft.SharePoint.Client.File])
$fileLoad.Invoke($ctx,@($wikiFile,$null))
$wikiPage = $wikiFile.ListItemAllFields
$wikiPage["PublishingPageContent"] = $pageContent
$wikiPage["PublishingPageLayout"] = "/_catalogs/masterpage/EnterpriseWiki.aspx, Basic Page"
$wikiPage.Update()
$ctx.ExecuteQuery();
}
$credentials = New-Object System.Net.NetworkCredential('username', 'password','domain')
$webUrl = 'http://intranet.contoso.net/kb/'
$pageName = 'MyFirstWikiPage.aspx'
$pageContent = '<h1>Welcome to the Knowledge Base!</h1>'
CreateWikiPage $webUrl $credentials $pageName $pageContent
Références