有许多文章介绍了如何创建SharePoint Composed外观。他们还声称要应用所说的组合外观,但他们实际上只是应用了调色板主题。
使用SPWeb.ApplyTheme()应用主题不应用母版页(仅调色板/字体/徽标)。
有没有办法用powershell或C#应用复合主题?
我已成功应用调色板(使用ApplyTheme()和母版页(使用MasterUrl / CustomMasterUrl)但是当我转到"更改外观"它并不表示正确的组合选择主题(显示选择默认蓝色)。
答案 0 :(得分:1)
你对所发现的东西绝对正确,我也遇到了同样的事情。基本上你需要更新“当前”组合外观以匹配你通过ApplyTheme()和MasterUrl / CustomMasterUrl应用的Composed Look的字段值:
#Set URL variables
$urlForSite = "https://YourSharePointSite/sites/test"
$themeUrl = "/sites/test/_catalogs/theme/15/YourTheme.spcolor"
#Get the site
$site = Get-SPSite $urlForSite
$relativeUrl = $site.ServerRelativeUrl
if ($relativeUrl -eq "/") {
$relativeUrl = "" #make sure it doesn't end in a slash
}
#Update the "Current" entry if there is one
$designList = $site.GetCatalog([Microsoft.SharePoint.SPListTemplateType]::DesignCatalog)
$camlQ = New-Object Microsoft.SharePoint.SPQuery
$camlQ.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>Current</Value></Eq></Where>"
$items = $designList.GetItems($camlQ)
if ($items.Count -eq 1) {
$item = $items[0]
$item["MasterPageUrl"] = $relativeUrl + "/_catalogs/masterpage/seattle.master"
$item["ThemeUrl"] = $themeUrl
#Include these if you need to
#$item["ImageUrl"] = ?
#$item["FontSchemeUrl"] = ?
$item.Update()
}
#Dispose because you know you should
$site.Dispose()
我还发现,当您通过UI中的“更改外观”选项应用组合外观时,在生成预览时/之后,它似乎使用DesignPreviewSaveData类: https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.utilities.designpreviewsavedata_properties.aspx
生成此预览时,会有两个属性添加到SPWeb的属性包中:
我发现我不需要更新这些属性,但您可能只想执行与UI过程相同的步骤。