Sharepoint: ¿Cómo puedo cambiar el formato predeterminado de página para recién creado subsitios?

Estoy trabajando en un sitio de publicación de sharepoint 2010 que tiene muchos subsitios. He creado una página maestra personalizada, y varios diseños de página personalizados.

He descubierto la forma para establecer el valor predeterminado de la página de diseño de páginas nuevas creadas en un subsitio (que se encuentra en /_Layouts/AreaTemplateSettings.aspx), pero me parece que no puede averiguar cómo especificar la página por defecto del diseño que se usa para crear ~/Pages/default.aspx cuando creo un nuevo subsitio.

Ahora selecciona WelcomeLinks.aspx, y eso no es lo que quiero.

Es esta sólo disponible si yo desplegar páginas maestras personalizadas /diseños a través de código, y si es así, ¿alguien tiene alguna buena ejemplos?

Gracias.

InformationsquelleAutor ScottE | 2010-11-16

4 Kommentare

  1. 3

    No es necesario implementar una página personalizada de diseño, pero sí es necesario utilizar el código. La manera en que hemos resuelto este problema es crear un Receptor de Eventos para el WebProvisioned evento que se dispara después de un nuevo SPWeb ha sido creado.

    Lo que puedes hacer es actualizar la PublishingPage en la nueva web con el Diseño de Página que desee. Esto permite a los usuarios crear nuevos sitios web, sino que para establecer el valor predeterminado de Diseño de Página de cada nueva web.

    Este es el receptor de eventos código:

    public override void WebProvisioned(SPWebEventProperties properties)
    {
        try
        {
            if (PublishingWeb.IsPublishingWeb(properties.Web))
            {
                PublishingWeb curPubWeb = PublishingWeb.GetPublishingWeb(properties.Web);
    
                foreach (PageLayout curLayout in curPubWeb.GetAvailablePageLayouts())
                {
                    if (curLayout.Name == "DefaultPageLayout.aspx")
                    {
                        foreach (PublishingPage curPage in curPubWeb.GetPublishingPages())
                        {
                            curPage.CheckOut();
                            curPage.Layout = curLayout;
                            curPage.Update();
                            curPage.CheckIn("");
                        }
                        break;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            /* Handle exception here */
        }
    }

    Y este es el código para registrar el receptor de eventos (esto se puede ejecutar cuando su función se activa o se puede ejecutar una vez desde un script de PowerShell o aplicación de consola):

    using (SPSite topSite = new SPSite("[Site Collection URL]"))
    {
        SPEventReceiverDefinition webEventDef = topSite.EventReceivers.Add();
        webEventDef.Name = "Web Adding Receiver";
        webEventDef.Synchronization = SPEventReceiverSynchronization.Synchronous;
        webEventDef.Type = SPEventReceiverType.WebProvisioned;
        webEventDef.SequenceNumber = 4001;
        webEventDef.Assembly = "MyCustomAssembly, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=123456789";
        webEventDef.Class = "MyCustomAssembly.CustomEvents";
        webEventDef.Data = "Adding publishingwebfeatures";
        webEventDef.Update();
    }
  2. 4

    El Diseño de la Página de un recién creado subsitio está determinado por la definición de sitio. Por ejemplo, si desea crear un subsitio utilizando el Sitio de Publicación con plantilla de Flujo de trabajo, luego que el sitio es creado usando la Configuración ID=»2″ de 14\TEMPLATE\SiteTemplates\BLANKINTERNET\XML\onet.xml. Dentro de la configuración de un módulo de sección que apunta a SubWebWelcome:

    <Module Name="SubWebWelcome" Url="$Resources:osrvcore,List_Pages_UrlName;" Path="">
        <File Url="default.aspx" Type="GhostableInLibrary" Level="Draft" >
            <Property Name="Title" Value="$Resources:cmscore,IPPT_HomeWelcomePage_Title;" />
            <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/WelcomeLinks.aspx, $Resources:cmscore,PageLayout_WelcomeLinks_Title;" />
            <Property Name="ContentType" Value="$Resources:cmscore,contenttype_welcomepage_name;" />
        </File>
    </Module>

    Como se puede ver, SubWebWelcome dispuesto en el valor predeterminado.aspx el uso de la WelcomeLinks Diseño de Página.

    Si quieres un Diseño de Página diferente para la página predeterminada, usted tiene dos opciones:

    1. Crear una definición de sitio personalizado basado en BLANKINTERNET que utiliza su deseada de Diseño de Página.
    2. Continuar el uso de la salida de la caja de definición de sitio con código personalizado (lanzado ya sea por la función de grapado o receptores de eventos) que cambia el Diseño de la Página de WelcomeLinks.
  3. 1

    Si la Publicación característica está habilitada en el sitio, debe ser tan simple como ir a:

    Configuración del sitio, la Apariencia de la Página de Bienvenida y selección de la página

  4. 0

    Parece que cuando se agrega la publicación de sub redes para SharePoint no parecen heredar el padre webs de presentación de página predeterminada. Lo que es más, incluso si se llama SetDefaultPageLayout pasar true para restablecer todos los sub-sitios, esta opción todavía no se pegue.

    Después de andamios de mi toda la estructura del sitio (sub-redes), tuve que implementar la siguiente función recursiva para asegurar la parte superior de la presentación de página predeterminada es la herencia, esperemos que esto ayude a alguien.

    //Recursively update sub-webs to inherit the default page layout.
    Action<PublishingWeb> updateWebRecursive = null;
    updateWebRecursive = new Action<PublishingWeb>((parentWeb) =>
    {
        PublishingWebCollection childWebs = parentWeb.GetPublishingWebs();
        if (!parentWeb.Web.IsRootWeb)
        {
            parentWeb.InheritDefaultPageLayout();
            parentWeb.Update();
        }
        foreach (PublishingWeb childWeb in childWebs)
        {
            updateWebRecursive(childWeb);
        }
    });
    updateWebRecursive(pubWeb);

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea