Click to Rate and Give Feedback
MSDN
MSDN Library
Office Development
SDK Documentation
PublishingWeb Class
 SetAvailablePageLayouts Method
Community Content
In this section
Statistics Annotations (0)
PublishingWeb.SetAvailablePageLayouts Method (Microsoft.SharePoint.Publishing)
Specifies PageLayout objects that are available for use in creating PublishingPage objects within this PublishingWeb object.

Namespace: Microsoft.SharePoint.Publishing
Assembly: Microsoft.SharePoint.Publishing (in microsoft.sharepoint.publishing.dll)
Visual Basic (Declaration)
Public Sub SetAvailablePageLayouts ( _
    pageLayouts As PageLayout(), _
    resetAllSubsitesToInherit As Boolean _
)
Visual Basic (Usage)
Dim instance As PublishingWeb
Dim pageLayouts As PageLayout()
Dim resetAllSubsitesToInherit As Boolean

instance.SetAvailablePageLayouts(pageLayouts, resetAllSubsitesToInherit)
C#
public void SetAvailablePageLayouts (
    PageLayout[] pageLayouts,
    bool resetAllSubsitesToInherit
)

Parameters

pageLayouts

An array of PageLayout objects that are available for use in creating PublishingPage objects within this PublishingWeb object.

resetAllSubsitesToInherit

This Boolean parameter indicates whether the available PageLayout objects should be pushed down to all subsites.

After calling this method, the GetAvailablePageLayouts method returns this set PageLayout objects. The IsInheritingAvailablePageLayoutsand IsAllowingAllPageLayouts properties are False.

To save changes after calling this method, call the Update method.

NoteNote:

This operation is synchronous.

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);
            }
        }
    }
}
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker