Определение сайтов (Site Definition)
Рассмотрим способ создания собственного шаблона сайта, в котором предусмотрим создание необходимых библиотек и списков, активация фич, наполнение страниц веб-частями, а также применение необходимой главной страницы.
1. Создадим пустой проект для SharePoint и добавим шаблон Определения сайта
2. В папку Определения сайта добавим файл главной страницы, тот который Вы создали или изменили.
3. Отредактируем файл onet.xml
<?xml version="1.0" encoding="utf-8"?>
<Project Title="BlankSiteDefinition1" Revision="2" ListDir="" xmlns:ows="Microsoft SharePoint" xmlns="http://schemas.microsoft.com/sharepoint/">
<NavBars>
<NavBar Name="SharePoint Top Navbar" ID="1002">
<NavBarLink Name="Главная" Url="default.aspx" />
</NavBar>
</NavBars>
<Configurations>
<Configuration ID="0" Name="BlankSiteDefinition1" MasterUrl="_catalogs/masterpage/MainSite.master">
<Lists>
<List Type="119" Title="Страницы
сайта" Url="SitePages" />
<List Type="102" Title="Опрос" Url="Lists/Survey" />
<List Type="107" Title="Задачи" Url="Lists/Tasks" >
<Data>
<Rows>
<Row>
<Field Name="Title">Task1</Field>
<Field Name="Body">Task body 1</Field>
<Field Name="Expires"><ows:TodayISO/></Field>
</Row>
<Row>
<Field Name="Title">Task2</Field>
<Field Name="Body">Task body 2</Field>
<Field Name="Expires">
<ows:TodayISO/>
</Field>
</Row>
</Rows>
</Data>
</List>
</Lists>
<SiteFeatures>
<Feature ID="da8bcbc6-8854-4455-aa6d-d4f9ec0a6ace" Name="blog Feature2"/>
</SiteFeatures>
<WebFeatures>
</WebFeatures>
<Modules>
<Module Name="DefaultBlank" />
<Module Name="MasterPage" />
<Module Name="WikiPages" />
</Modules>
</Configuration>
</Configurations>
<Modules>
<Module Name="DefaultBlank" Url="" Path="">
<File Url="default.aspx">
<AllUsersWebPart WebPartOrder="0" WebPartZoneID="Top" ID="g_bdef0b56_c2f4_4c5a_bc39_2908a0f61410">
<![CDATA[
<webParts>
<webPart
xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type
name="blog.VisualWebPart1.VisualWebPart1, blog, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=10bd20619efdbcaf" />
<importErrorMessage>Не
удается
импортировать
эту
веб-часть.</importErrorMessage>
</metaData>
<data>
<properties>
<property
name="Title"
type="string">VisualWebPart</property>
<property
name="Description" type="string">Моя
визуальная
веб-часть</property>
<property
name="MyTitle" type="string">value</property>
</properties>
</data>
</webPart>
</webParts>
]]>
</AllUsersWebPart>
</File>
</Module>
<Module Name="WikiPages" List="119" Url="SitePages" >
<File Url="default.aspx" IgnoreIfAlreadyExists="TRUE" NavBarHome="True" Type="GhostableInLibrary">
<AllUsersWebPart WebPartZoneID="Top" 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>Заголовок</Title>
<FrameType>None</FrameType>
<cewp:Content>
<Value>
<center><h1> Главная страница </h1>
</center> <br />
<h1>Лента новостей
</h1>
</Value>
</cewp:Content>
</WebPart>
]]>
</AllUsersWebPart>
</File>
</Module>
<Module Name="MasterPage" List="116" Url="_catalogs/masterpage" RootWebOnly="FALSE">
<File Url="MainSite.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" />
</Module>
</Modules>
</Project>
Несколько комментариев к описанному в этом файле.
а. С начала описывается навигация. В данном случаи создаётся верхняя навигация. Чтобы добавить пункты в левое меню, необходимо добавить такой же тег, но с большими ID.
б. MasterURL указывает адрес нахождения необходимой главной страницы
в. В теге Lists перечисляются списки, необходимые на сайте - указывается код типа списка, название, а также желаемое местонахождение на сайте. Представлен пример, как сразу же можно заполнять списки значениями - список "Задачи" (после создания сайта там появятся две задачи)
г. Далее идёт возможность активации фич. Необходимо знать их GUID и Имя. Обратите внимание, что часть фич активируется на уровне web, а часть на уровне сайт. Т.е. их разместить в соответствующем правильном теге.
д. Перечисляются модули, которые необходимо добавить - опишу ниже.
Модуль DefaultBlank добавляет в корень страницу по умолчанию. На эту страницу добавляет визуальную веб-часть, созданную нами в этой статье. Веб-части устанавливаются свойство. Один из способов узнать содержимое MetaData - это зайти в список веб частей и у нужной посмотреть её xml.
Модуль WikiPages добавляет туже страницу в вики библиотеку, но с другой веб-частью. В данном случаи добавлена стандартная веб-часть "Редактор контента", где контент добавляется непосредственно здесь в виде HTML разметки.
Модуль MasterPage добавляет в библиотеку главных страниц нашу главную страницу.
Комментарии можно оставлять "здесь"
Обращайте внимание на языки SharePoint-ов, где ведется разработка и где будет эксплуатация. Определения в различных языках развертываются в разные коды папки TEMPLATE (1033 и 1049, например, для русских и английских версиях), поэтому могут быть недоступны в шаблонах. Я ещё предпочитаю перезапускать пул приложения, после деплоя.
Обращайте внимание на языки SharePoint-ов, где ведется разработка и где будет эксплуатация. Определения в различных языках развертываются в разные коды папки TEMPLATE (1033 и 1049, например, для русских и английских версиях), поэтому могут быть недоступны в шаблонах. Я ещё предпочитаю перезапускать пул приложения, после деплоя.
Приведу пример разметки default.aspx, которую я использовал для размещения веб-частей
<%@
Page language="C#" MasterPageFile="~masterurl/default.master" Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>
<%@
Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint,
Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
%>
<%@
Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint,
Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
%>
<%@
Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@
Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint,
Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
%>
<%@
Import Namespace="Microsoft.SharePoint" %>
<%@
Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@
Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0,
Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<asp:Content
ContentPlaceHolderId="PlaceHolderPageTitle"
runat="server">
<SharePoint:ProjectProperty Property="Title" runat="server"/>
</asp:Content>
<asp:Content
ID="Content1"
ContentPlaceHolderId="PlaceHolderMain"
runat="server">
<WebPartPages:WebPartZone runat="server" FrameType="None" ID="Top" Title="loc:Top">
<ZoneTemplate>
</ZoneTemplate>
</WebPartPages:WebPartZone>
</asp:Content>
Можно и непосредственно на страницу добавлять веб-часть (т.е. не через файл Onet.xml)
Для этого сначала нужно зарегистрировать её на странице
<%@
Register TagPrefix="WpNs0" Namespace="xxx.yyyy" Assembly="xxx,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=e1eb0751d1048c5a"%>
А потом добавить её в зону шаблона:
<ZoneTemplate>
<WpNs0:WebPart_Myl runat="server"
ID="g_ef5dcb3f_9aec_43d3_b46g_4ae649367643"
Description="Веб часть" Title="Все" ImportErrorMessage="Не удается импортировать эту веб-часть." __MarkupType="vsattributemarkup"
__WebPartId="{D49ADBC3-804A-4C14-BE90-5AF67AD246SF}"
WebPart="true"
__designer:IsClosed="false"
/>
</ZoneTemplate>
Самый легкий способ получить необходимы данные:
1. Добавить веб часть на страницу, настроить её;
2. Открыть эту страницу через SharePoint Designer;
3. Скопировать эти необходимые строчки.
1 комментарий:
TemplateMonster - идеальный выбор для тех, кто ищет удивительные и современные шаблоны презентаций PowerPoint .
Отправить комментарий