Как изменить макет страницы Wiki в SharePoint 2010, используя PowerShell?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/84153

  •  10-12-2019
  •  | 
  •  

Вопрос

Я хотел бы создать страницу Wiki с помощью PowerShell и хотела бы установить «два столбца с заголовком» в качестве макета страницы вместо макета «One Column».В состоянии создать страницу, однако не знаем, как обновить макет страницы.Пожалуйста, помогите.

Примечание: Функция публикации не включена в Интернете.

## 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();
.

работает, если содержимое HTML напрямую добавляется.Однако это делает какое-либо влияние на производительность?

### 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();
.

Это было полезно?

Решение

Чтобы указать макет страницы при создании страницы Wiki Используйте ootb spfield PublishingPageLayout, например:

$wikiPage["PublishingPageLayout"] = "/_catalogs/masterpage/EnterpriseWiki.aspx, Basic Page"
.

Как создать страницу Wiki в SharePoint 2010

Ниже приведен код для создания страниц Wiki в 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
.

Ссылки

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top