PublishingWeb.IsAllowingAllPageLayouts Property

Gets a Boolean value that indicates whether the available PageLayout objects that are returned by the GetAvailablePageLayouts method are the complete set of page layouts.

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

public bool IsAllowingAllPageLayouts { get; }

Property Value

Type: System.Boolean
Set to True if the available PageLayout objects for this PublishingWeb is the complete set; otherwise, it is set to False.

This sample 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 sample, verify that the associatedContentTypeId parameter is from a content type on the root Web of the site.

[c#]

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)
        {
            // TODO: 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);
            }
        }
    }
}

Community Additions

ADD
Show: