Ответ на ваш первый вопрос зависит от того, имеете ли вы в виду страницы приложения или страницы содержания . У каждого из них есть свои преимущества: страницы приложений хороши тем, что могут запускать пользовательский код на стороне сервера, а страницы контента хороши тем, что (например) они могут настраиваться пользователями, но по умолчанию ограничены тем, какой код может быть бежать.
Для довольно хорошего обсуждения различий между двумя типами возможностей и ограничений, ознакомьтесь с SDK для Windows SharePoint Services и посмотрите на темы, названные « Application _layouts тип страницы » и « Тип страницы содержимого . "
Что касается сшивания, это довольно просто и более гибко, чем добавление новых функций в файл определения сайта onet.xml. Эта статья кажется довольно хорошим обзором альтернатив. Возможно, вы захотите сделать копию пустого определения сайта, переименовать его, а затем использовать его в своей работе.
Функции со страницами содержимого
Для этого вам понадобятся три типа вещей:
- Файл feature.xml - просто шаблон, который ссылается на манифест элемента.
- Шаблон страницы - это может быть вся страница aspx, или это может быть (например) оболочка страницы веб-части с определением
WebPartZones
, но без реальных веб-частей (пока).
- Файл манифеста элемента, который ссылается на шаблоны вашей страницы и определяет любые веб-части, которые должны быть предоставлены как часть активации вашей функции.
Структура папок вашей функции будет выглядеть примерно так:
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>
Если вы настроите свою функцию таким образом, вы сможете развернуть страницы содержимого сайта в этой структуре.
Кроме того, я настоятельно рекомендую книгу Теда Паттисона Inside Windows SharePoint Services . Он охватывает эту тему более подробно, включая важные аспекты безопасности страниц контента сайта. Это легко стоит покупной цены.