Определение сайтов (Site Definition)

Определение сайтов (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>
                &lt;center&gt;&lt;h1&gt; Главная страница  &lt;/h1&gt; &lt;/center&gt; <br />
                &lt;h1&gt;Лента новостей &lt;/h1&gt;
              </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, например, для русских и английских версиях), поэтому могут быть недоступны в шаблонах. Я ещё предпочитаю перезапускать пул приложения, после деплоя.

Приведу пример разметки 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 комментарий:

Sergey комментирует...

TemplateMonster - идеальный выбор для тех, кто ищет удивительные и современные шаблоны презентаций PowerPoint .

Яндекс.Метрика