2017-06-15 1 views
0

De nombreux articles expliquent comment créer un aspect composé SharePoint. Ils prétendent également appliquer ce regard composé mais ils appliquent simplement un thème de palette de couleurs.SharePoint - Comment appliquer réellement un aspect composé avec PowerShell

Example

L'application d'un thème avec SPWeb.ApplyTheme() ne pas appliquer une page principale (seule la palette de couleurs/font/logo).

Existe-t-il un moyen d'appliquer un thème composé avec powershell ou C#? J'ai appliqué avec succès une palette de couleurs (avec ApplyTheme() et Master Page (avec MasterUrl/CustomMasterUrl) mais quand je vais dans "Change The Look", cela n'indique pas que le Thème Composé correct est sélectionné (il montre le bleu par défaut est sélectionné.)

+0

S'il vous plaît poster du code et des captures d'écran afin que la communauté peut essayer de vous aider. – gms0ulman

Répondre

1

Vous avez absolument raison avec ce que vous avez découvert, et je suis tombé sur la même chose: vous devez essentiellement mettre à jour l'apparence composée "actuelle" pour qu'elle corresponde aux valeurs de champ de votre apparence composée. que vous avez appliqué via ApplyTheme() et MasterUrl/CustomMasterUrl:

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

J'ai aussi trouvé que lorsque vous APPL ya Rechercher Composée via l'option « Modifier l'apparence » dans l'interface utilisateur qu'il semble utiliser la classe DesignPreviewSaveData quand/après avoir généré l'aperçu: https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.utilities.designpreviewsavedata_properties.aspx

Lorsque cet aperçu est généré, il y a deux propriétés qui sont ajoutées aux années SPWeb sac de propriété:

  • DesignPreviewLayoutUrl
  • DesignPreviewThemedCssFolderUrl

je trouve que je ne l'ai pas besoin de mettre à jour ces propriétés, mais vous pouvez voulez simplement passer par les mêmes étapes que le processus d'interface utilisateur.