PublishingWeb.GetAvailablePageLayouts method

Returns the PageLayout objects available for creating PublishingPage objects within this PublishingWeb.

Namespace:  Microsoft.SharePoint.Publishing
Assembly:  Microsoft.SharePoint.Publishing (in Microsoft.SharePoint.Publishing.dll)

public PageLayout[] GetAvailablePageLayouts()

Return value

Type: []
An array of PageLayouts available for creating PublishingPage objects within this PublishingWeb object.

The available PageLayout objects returned by this method may be inherited from a parent PublishingWeb object, as indicated by the property IsInheritingAvailablePageLayouts.

Use the GetAvailablePageLayouts(SPContentTypeId) method to return a subset of the PageLayout objects filtered by the AssociatedContentType property ID.

Use the methods PageLayouts(), AllowAllPageLayouts(), and InheritAvailablePageLayouts to modify the set of PageLayout objects returned by this method.

This example restricts the set of available page layouts used for creating pages in a publishing Web so that only page layouts associated with a specified content type are available.

Before using this example, verify that the associatedContentTypeId parameter is from a content type on the root Web of the 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",

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

// Update the Web to use these page layouts when creating pages.


//  Verify the expected results. Note: This is not required. It demonstrates
//  the results of calling the SetAvailablePageLayouts method.

PageLayout[] availablePageLayouts = publishingWeb.GetAvailablePageLayouts();
foreach (PageLayout pageLayout in availablePageLayouts)
        pageLayout.AssociatedContentType.Id == associatedContentTypeId);