del método PublishingWeb.SetAvailablePageLayouts
Especifica los objetos PageLayout que están disponibles para su uso en la creación de objetos de PublishingPage dentro de este objeto PublishingWeb .
Espacio de nombres: Microsoft.SharePoint.Publishing
Ensamblado: Microsoft.SharePoint.Publishing (en Microsoft.SharePoint.Publishing.dll)
Sintaxis
'Declaración
Public Sub SetAvailablePageLayouts ( _
pageLayouts As PageLayout(), _
resetAllSubsitesToInherit As Boolean _
)
'Uso
Dim instance As PublishingWeb
Dim pageLayouts As PageLayout()
Dim resetAllSubsitesToInherit As Boolean
instance.SetAvailablePageLayouts(pageLayouts, _
resetAllSubsitesToInherit)
public void SetAvailablePageLayouts(
PageLayout[] pageLayouts,
bool resetAllSubsitesToInherit
)
Parámetros
pageLayouts
Tipo: []Una matriz de objetos PageLayout que están disponibles para su uso en la creación de objetos de PublishingPage dentro de este objeto PublishingWeb .
resetAllSubsitesToInherit
Tipo: System.BooleanEste parámetro booleano indica si deben enviarse los objetos disponibles PageLayout hacia abajo a todos los subsitios.
Comentarios
Después de llamar a este método, el método GetAvailablePageLayouts devuelve este conjunto de los objetos PageLayout . Las propiedades IsInheritingAvailablePageLayouts(),y IsAllowingAllPageLayouts() son falsos.
Para guardar los cambios después de llamar a este método, llame al método Update .
Nota
Esta operación es sincrónica.
Ejemplos
En este ejemplo se restringe el conjunto de diseños de página disponibles que se utilizan para crear páginas en una publicación Web para que estén disponibles sólo los diseños de página asociados con un tipo de contenido especificado.
Antes de utilizar este ejemplo, compruebe que el parámetro associatedContentTypeId es de un tipo de contenido en el sitio Web raíz del sitio.
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