В SharePoint Server есть макеты страниц (page layouts), на основе которых (по шаблону) создаются страницы публикации. В 2010 версии эти страницы еще называются корпоративные вики (enterprise wiki). Это не новая функциональность, она была и раньше, пришла еще из Content Management Server 2002. В отличие от вики страниц, где пользователь редактирует всю область страницы, страницы публикации подчинены структуре, в которой есть поля, четко типизированные и позиционированные в макете страницы. Страницы публикации могут быть в 2-х состояниях – просмотра и редактирования, в каждом из которых могут выглядеть по-разному.

http://msdn.microsoft.com/en-us/library/ms544928.aspx

Как это может выглядеть:

При этом, если открыть библиотеку со страницами и отредактировать страницу в форме, то видны все поля:

Эта функциональность доступна после создания сайта по шаблону публикации или включения возможностей «Инфраструктура публикации» в семействе сайтов и «Публикация» на уровне сайта. При этом в галерею мастер страниц добавляется тип контента и несколько макетов страниц, на сайте создается библиотека «Страницы» (не путать с вики «Страницы сайта»).

Такие страницы очень удобны для структурированного контента, такого как продукты, услуги, сотрудники, пресс релизы, и т.д.

Для реализации собственного макета необходимо создать тип контента, унаследованный от одного из макетов, а также создать .aspx файл – макет страницы, в котором Вы сделаете разметку, стили, разместите элементы управления, соответствующие полям в типе контента. Тип контента нужно будет добавить в библиотеку со страницами.

При редактировании страниц всегда можно выбрать макет:

Что нужно знать для работы с этими полями в макетах?

Тип поля – это класс, унаследованный от SPField. Можно программно добавить поля в библиотеку или тип контента. Можно добавить поле декларативно в XML описании или вручную в веб браузере или SharePoint Designer.

Узнать, какие поля доступны, можно заглянув в XML файлы в директории 14/Temaplate/XML с именами fldtypes*.xml. Там описаны все типы полей в системе с указанием на классы.

Также эту информацию можно получить через PowerShell:

$web = get-spweb http://portal

$web.FieldTypeDefinitionCollection | select TypeName, TypeShortDescription, FieldTypeClass | Format-List

Внимательно посмотрев на список становится понятно, что типов полей гораздо больше, чем кажется на первый взгляд, а некоторые типы на самом деле подразделяются на различные классы. Например, когда Вы добавляете поле выбора и ставите опцию множественного выбора, то создается уже другой тип поля. То же самое с полями подстановки и выбора пользователей.

Каждому типу поля соответствует также класс, унаследованный от BaseFieldControl и предназначенный для использования в форме или на странице.

http://msdn.microsoft.com/EN-US/library/microsoft.sharepoint.webcontrols.basefieldcontrol

Ниже приведены основные элементы управления SharePoint

  1. Microsoft.SharePoint.WebControls.BaseChoiceField
  2. Microsoft.SharePoint.WebControls.BaseTextField
  3. Microsoft.SharePoint.WebControls.BooleanField
  4. Microsoft.SharePoint.WebControls.BusinessDataFieldControl
  5. Microsoft.SharePoint.WebControls.CalculatedField
  6. Microsoft.SharePoint.WebControls.ComputedField
  7. Microsoft.SharePoint.WebControls.DateTimeField
  8. Microsoft.SharePoint.WebControls.FieldValue
  9. Microsoft.SharePoint.WebControls.LookupField
  10. Microsoft.SharePoint.WebControls.RatingScaleField
  11. Microsoft.SharePoint.WebControls.UrlField
  12. Microsoft.SharePoint.WebControls.UserField

Стоит учитывать, что это не полный список, от этих типов унаследованы другие классы.

 

Для работы с тегами на страницах есть отдельный класс - TaxonomyFieldControl - http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.taxonomy.taxonomyfieldcontrol.aspx

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.taxonomy.taxonomywebtaggingcontrol.aspx

 

Также для работы с полями публикации есть отдельная библиотека с пространством имен:

Microsoft.SharePoint.Publishing.Fields Namespace

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.fields.aspx

  1. HtmlField
  2. ImageField
  3. LinkField
  4. MediaField
  5. SummaryLinkField

 

Что же касается макета, то в макете всего-то нужно расставить в нужных местах дизайна элементы управления примерно таким образом:

<PublishingWebControls:RichHtmlField ID="myID" FieldName="MyField" runat="server" />

Самое главное здесь – это указать пространство имен и элемент управления, а также название созданного Вами поля. При этом важно помнить, что в разметку страницы необходимо добавить ссылку на сборку и пространство имен, а также зарегистрировать префикс для тегов.

 

Рекомендую также ознакомиться со следующими материалами: