PublishingWeb.GetAvailablePageLayouts - Méthode

Retourne les objets PageLayout disponibles pour la création d'objets PublishingPage dans ce PublishingWeb.

Espace de noms :  Microsoft.SharePoint.Publishing
Assembly :  Microsoft.SharePoint.Publishing (dans Microsoft.SharePoint.Publishing.dll)

public PageLayout[] GetAvailablePageLayouts()

Valeur renvoyée

Type : []
Un tableau de s PageLayoutdisponibles pour la création d'objets PublishingPage dans cet objet PublishingWeb .

Les objets disponibles PageLayout retournés par cette méthode peuvent être héritées d'un objet PublishingWeb parent, comme indiqué par la propriété IsInheritingAvailablePageLayouts.

Utilisez la méthode GetAvailablePageLayouts(SPContentTypeId) pour renvoyer un sous-ensemble des objets PageLayout filtré par l'ID de propriété AssociatedContentType .

Utilisez les méthodes PageLayouts(), AllowAllPageLayouts()et InheritAvailablePageLayouts pour modifier l'ensemble des objets PageLayout retourné par cette méthode.

Cet exemple limite l'ensemble de mises en page disponibles utilisées pour créer des pages dans une publication Web afin que seules les mises en page associés à un type de contenu spécifié sont disponibles.

Avant d'utiliser cet exemple, vérifiez que le paramètre associatedContentTypeId est un type de contenu sur le site Web racine du site.

using SPContentTypeId = Microsoft.SharePoint.SPContentTypeId;
using SPContentType = Microsoft.SharePoint.SPContentType;
using SPSite = Microsoft.SharePoint.SPSite;
using SPFile = Microsoft.SharePoint.SPFile;
using SPWeb = Microsoft.SharePoint.SPWeb;
using PublishingSite = Microsoft.SharePoint.Publishing.PublishingSite;
using PublishingWeb = Microsoft.SharePoint.Publishing.PublishingWeb;
using PageLayoutCollection = Microsoft.SharePoint.Publishing.PageLayoutCollection;
using PageLayout = Microsoft.SharePoint.Publishing.PageLayout;

namespace Microsoft.SDK.SharePointServer.Samples
{
    public static class PublishingWebCodeSamples
    {
  
        public static void RestrictPageLayoutsByContentType(
PublishingWeb publishingWeb, 
SPContentTypeId associatedContentTypeId)
        {
// Replace these variable values and input parameters with your own values.
bool excludeHiddenLayouts = true;
bool resetAllSubsitesToInherit = true;

// Validate the input parameters.
if (null == publishingWeb)
{
    throw new System.ArgumentNullException("publishingWeb");
}

SPSite site = publishingWeb.Web.Site;
PublishingSite publishingSite = new PublishingSite(site);

// Retrieve a collection of all page layouts in the site collection
// that match the content type.
SPContentType associatedContentType = publishingSite.ContentTypes[associatedContentTypeId];
if (null == associatedContentType)
{
    throw new System.ArgumentException(
        "The SPContentTypeId did not match an SPContentType in the SPSite.RootWeb",
        "associatedContentTypeId");
}

PageLayoutCollection pageLayoutsByContentType = 
    publishingSite.GetPageLayouts(associatedContentType, excludeHiddenLayouts);

// Update the Web to use these page layouts when creating pages.
publishingWeb.SetAvailablePageLayouts(
    pageLayoutsByContentType.ToArray(),
    resetAllSubsitesToInherit);

publishingWeb.Update();

//  Verify the expected results. Note: This is not required. It demonstrates
//  the results of calling the SetAvailablePageLayouts method.
//
System.Diagnostics.Debug.Assert(!publishingWeb.IsAllowingAllPageLayouts);
System.Diagnostics.Debug.Assert(!publishingWeb.IsInheritingAvailablePageLayouts);

PageLayout[] availablePageLayouts = publishingWeb.GetAvailablePageLayouts();
foreach (PageLayout pageLayout in availablePageLayouts)
{
    System.Diagnostics.Debug.Assert(
        pageLayout.AssociatedContentType.Id == associatedContentTypeId);
}
        }
    }
}
Afficher: