PublishingWeb.GetAvailablePageLayouts método
Retorna os objetos PageLayout disponíveis para a criação de objetos PublishingPage este PublishingWeb.
Namespace: Microsoft.SharePoint.Publishing
Assembly: Microsoft.SharePoint.Publishing (em Microsoft.SharePoint.Publishing.dll)
Sintaxe
'Declaração
Public Function GetAvailablePageLayouts As PageLayout()
'Uso
Dim instance As PublishingWeb
Dim returnValue As PageLayout()
returnValue = instance.GetAvailablePageLayouts()
public PageLayout[] GetAvailablePageLayouts()
Valor retornado
Tipo: []
Uma matriz de PageLayouts disponíveis para a criação de objetos de PublishingPage no objeto PublishingWeb .
Comentários
Os objetos disponíveis PageLayout retornados por esse método podem ser herdados de um objeto de PublishingWeb do pai, conforme indicado pela propriedade IsInheritingAvailablePageLayouts.
Use o método GetAvailablePageLayouts(SPContentTypeId) para retornar um subconjunto dos objetos PageLayout filtrados pela identificação da propriedade AssociatedContentType .
Use os métodos PageLayouts(), **AllowAllPageLayouts()**e InheritAvailablePageLayouts para modificar o conjunto de objetos PageLayout retornado por esse método.
Exemplos
Este exemplo restringe o conjunto de layouts de página disponíveis usados para criar páginas em uma publicação da Web, para que somente os layouts de página associados a um tipo de conteúdo especificado estão disponíveis.
Antes de usar este exemplo, verifique se o parâmetro associatedContentTypeId é um tipo de conteúdo na Web raiz do 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);
}
}
}
}
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
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. Note: This is not required. It 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
Ver também
Referência
GetAvailablePageLayouts em sobrecarga