PublishingSite.ContentTypes Property

Gets the collection of SPContentType objects from the RootWeb property.

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

Syntax

'Declaration
Public ReadOnly Property ContentTypes As SPContentTypeCollection
    Get
'Usage
Dim instance As PublishingSite
Dim value As SPContentTypeCollection

value = instance.ContentTypes
public SPContentTypeCollection ContentTypes { get; }

Property Value

Type: Microsoft.SharePoint.SPContentTypeCollection
The collection of SPContentType objects from the RootWeb property.

Remarks

This property wraps the ContentTypes property of the RootWeb property.

Examples

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
    {
// 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 certain content type are available.
  //
  // Prerequisites:
  // The associatedContentTypeId parameter is from a content
  // type on the root Web of the site.
  //
  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 (this is not required,
// and simply 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);
}

  }

    }
}
Imports SPContentTypeId = Microsoft.SharePoint.SPContentTypeId
Imports SPContentType = Microsoft.SharePoint.SPContentType
Imports SPSite = Microsoft.SharePoint.SPSite
Imports SPFile = Microsoft.SharePoint.SPFile
Imports SPWeb = Microsoft.SharePoint.SPWeb
Imports PublishingSite = Microsoft.SharePoint.Publishing.PublishingSite
Imports PublishingWeb = Microsoft.SharePoint.Publishing.PublishingWeb
Imports PageLayoutCollection = Microsoft.SharePoint.Publishing.PageLayoutCollection
Imports PageLayout = Microsoft.SharePoint.Publishing.PageLayout

Namespace Microsoft.SDK.SharePointServer.Samples
    Public NotInheritable Class PublishingWebCodeSamples
' 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 certain content type are available.
  '
  ' Prerequisites:
  ' The associatedContentTypeId parameter is from a content
  ' type on the root Web of the site.
  '
  Private Sub New()
  End Sub
  Public Shared Sub RestrictPageLayoutsByContentType(ByVal publishingWeb As PublishingWeb, ByVal associatedContentTypeId As SPContentTypeId)
' Replace these variable values and input
' parameters with your own values.
Dim excludeHiddenLayouts As Boolean = True
Dim resetAllSubsitesToInherit As Boolean = True

'
' Validate the input parameters.
'
If Nothing Is publishingWeb Then
    Throw New System.ArgumentNullException("publishingWeb")
End If

Dim site As SPSite = publishingWeb.Web.Site
Dim publishingSite As New PublishingSite(site)

'
' Retrieve a collection of all page layouts in the site
' collection that match the content type.
'
Dim associatedContentType As SPContentType = publishingSite.ContentTypes(associatedContentTypeId)
If Nothing Is associatedContentType Then
    Throw New System.ArgumentException("The SPContentTypeId did not match an SPContentType in the SPSite.RootWeb", "associatedContentTypeId")
End If

Dim pageLayoutsByContentType As PageLayoutCollection = 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 (this is not required,
' and simply demonstrates the results of calling the
'  SetAvailablePageLayouts method).
System.Diagnostics.Debug.Assert((Not publishingWeb.IsAllowingAllPageLayouts))
System.Diagnostics.Debug.Assert((Not publishingWeb.IsInheritingAvailablePageLayouts))

Dim availablePageLayouts() As PageLayout = publishingWeb.GetAvailablePageLayouts()
For Each pageLayout As PageLayout In availablePageLayouts
    System.Diagnostics.Debug.Assert(pageLayout.AssociatedContentType.Id Is associatedContentTypeId)
Next pageLayout

  End Sub

    End Class
End Namespace

See Also

Reference

PublishingSite Class

PublishingSite Members

Microsoft.SharePoint.Publishing Namespace

PublishingSite