Pregunta

Soy totalmente nuevo en Sharepoint (2007), así que tengan paciencia conmigo. Me gustaría crear automáticamente páginas aspx cuando se crea un nuevo sitio. Estas páginas estarán vinculadas a través de pestañas que serán definidas por una página maestra. No tengo una definición de sitio personalizada y estaba planeando aplicar el grapado de funciones a la definición de sitio en blanco lista para usar.

A través de mi investigación, creo que puede crear una página de elementos web y convertir esto en una característica. Entonces puedo engrapar esto a la definición del sitio en blanco. El problema es que no he encontrado ninguna información sobre cómo hacer esto. Entonces las dos preguntas que tengo son:

  1. ¿Cómo creo una función que es solo una página aspx?
  2. ¿Cómo grapo esta función a una definición de sitio en blanco?

Encontré a una persona haciendo la misma pregunta aquí: ¿Cómo agregar una página de elementos web a una definición de sitio? Leí la primera respuesta, pero se me pasó por la cabeza y no sé si realmente responde a mi pregunta.

¡Muchas gracias!

¿Fue útil?

Solución

La respuesta a su primera pregunta depende de si se refiere a páginas de aplicaciones o páginas de contenido . Cada uno tiene sus ventajas: las páginas de aplicación son buenas porque pueden ejecutar código personalizado del lado del servidor, y las páginas de contenido son buenas porque (por ejemplo) pueden ser personalizadas por los usuarios, pero por defecto están restringidas en qué tipo de código puede ser ejecutar.

Para una discusión bastante buena sobre las diferencias entre los dos tipos en capacidades y restricciones, consulte el SDK de Windows SharePoint Services y mire los temas llamados " Tipo de página _layouts de la aplicación " y " Tipo de página de contenido . "

En cuanto al grapado, es bastante fácil y más flexible que agregar nuevas funciones al archivo onet.xml de una definición de sitio. Este artículo parece una muy buena descripción de las alternativas. Sin embargo, es posible que desee hacer una copia de la definición de sitio en blanco, cambiarle el nombre y luego usarla en su trabajo.

Funciones con páginas de contenido

Necesitarás tres tipos de cosas para esto:

  1. Un archivo feature.xml: solo el material repetitivo que hace referencia al manifiesto del elemento.
  2. Una plantilla de página: podría ser la página aspx completa en sí misma, o podría ser (por ejemplo) un shell de una página de elementos web con WebPartZones definido pero sin elementos web reales (todavía) .
  3. El archivo de manifiesto del elemento que hace referencia a las plantillas de su página y define los elementos web que deben aprovisionarse como parte de la activación de su función.

La estructura de carpetas de su función se vería así:

12
+-- TEMPLATES
    +-- FEATURES
        +-- YourFeature
            +-- PageTemplates
            |   +-- Page.aspx (simple aspx page)
            |   +-- WebPartPage.aspx (still simple, but with WebPartZones)
            +-- feature.xml
            +-- elements.xml

Feature.xml:

<Feature 
  Id="CFF117BC-9685-4a7b-88D0-523D9DAD21F0"
  Title="Custom Pages Feature"
  Scope="Web"
  xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementManifest Location="elements.xml"/>
  </ElementManifests>
</Feature>

Elements.xml

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Path="PageTemplates" Url="Pages" >
    <File Url="Page.aspx" Type="Ghostable" />
    <File Url="WebPartPage.aspx" Name="WebPartPage.aspx" Type="Ghostable" >
      <AllUsersWebPart WebPartZoneID="Left" WebPartOrder="0">
        <![CDATA[         
            <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"
                     xmlns:cewp="http://schemas.microsoft.com/WebPart/v2/ContentEditor">
                <Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
                <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>
                <Title>Some content that you want to provision with the feature</Title>
                <FrameType>TitleBarOnly</FrameType>
                <cewp:Content>
                  Hello world.
                </cewp:Content>
            </WebPart>
        ]]>
      </AllUsersWebPart>
    </File>
  </Module>
</Elements>

Page.aspx

<%@ Page MasterPageFile="~masterurl/default.master" 
    meta:progid="SharePoint.WebPartPage.Document"  %>
<asp:Content runat="server" ContentPlaceHolderID="PlaceHolderMain">
  Hello World
</asp:Content>

WebPartPage.aspx

<%@ Page Language="C#" MasterPageFile="~masterurl/default.master" Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" meta:progid="SharePoint.WebPartPage.Document"   %>

<%@ Register Tagprefix="WebPartPages" 
             Namespace="Microsoft.SharePoint.WebPartPages" 
             Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<asp:Content ID="main" runat="server" ContentPlaceHolderID="PlaceHolderMain" >

<table width="100%">
  <tr>
    <td valign="top" style="width:50%">
        <WebPartPages:WebPartZone ID="Left" runat="server" 
                      FrameType="TitleBarOnly" Title="Left Web Part Zone" />
    </td>
    <td valign="top" style="width:50%">
        <WebPartPages:WebPartZone ID="Right" runat="server" 
                     FrameType="TitleBarOnly" Title="Right Web Part Zone" />        
    </td>
  </tr>
</table>

</asp:Content>

Si configura su función de esa manera, debería poder implementar páginas de contenido del sitio dentro de esa estructura.

Además, recomiendo encarecidamente el libro de Ted Pattison Inside Windows SharePoint Services . Cubre este tema con mucho detalle, incluidos los aspectos importantes de seguridad de las páginas de contenido del sitio. Vale la pena el precio de compra fácilmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top