Welcome to TechNet Blogs Sign in | Join | Help

Создание своего ContentType для Page Layout

В этом примере мы создадим свой content type для page layout и применим его к уже сущестующему layout'у. При этом свой Content Type мы будем делатьне с нуля, а унаследуем его от Publishing Page.

1. Создадим файл feature.xml. Не буду описывать куда его клать и как инсталлировать. Это уже много кто и где описывал. В том числе я в этом посте.  В крайнем случае msdn и google вам помогут ;).

<Feature  Id="0023C143-9E60-4277-A74F-048C7CAB5760"
          Title="PageLayoutTest"
          Description=""
          Version="1.0.0.0"
          Scope="Site"
          SolutionId="6FAD47E8-7622-4D57-93E1-9FE02F385181"
          xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
     <ElementManifest Location="ContentType.xml"/>
     <ElementManifest Location="CopyFiles.xml"/>
  </ElementManifests>
</Feature>

2. Создадим файл ContentType.xml

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
...... 

<!-- Базовая страница -->
 <ContentType ID="0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900F164056CC3DA474096DD366224B5D804"
 Name="TestPageLayout"
 Group="Custom Content Types"
 Description="">
<FieldRefs>
<!-- здесь ссылаться на поле, используя <FieldRef /> -->  

</FieldRefs>
 </ContentType>

.......

</Elements>

Давайте разберемся с генерацией ID для Content Types:

Идентификаторы генерируются особым образом.

0x0101 - признак того, что мы наследуемся от документа

x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39 - так выглядить ID Publishing Page

00 - это разделитель. Он обязателен.

F164056CC3DA474096DD366224B5D804 - сгенерированный нами идентификатор

3. Теперь создадим файл CopyFiles.xml в котром и применим наш ContentType к PageLayout используя feature

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

 <Module Name="PageLayouts" Url="_catalogs/masterpage" Path="PageLayouts" >

<File Url="TestLayout.aspx" Type="GhostableInLibrary"  >
    <Property Name="ContentType" Value="$Resources:cmscore,contenttype_pagelayout_name;" />
    <Property Name="PublishingAssociatedContentType" Value=";#TestPageLayout;;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900F164056CC3DA474096DD366224B5D804;#" />
   </File>

 </Module>

</Elements>

Примечание:

1) Две ";" подряд после TestPageLayout - это не опечатка, а просто у поля PublishingAssociatedContentType такой не тривиальный синтаксис.

2) Для того, чтобы все заработало, необходимо создать в папке с фичей папку PageLayouts и положить в нее файл TestLayout.aspx

Published Thursday, June 28, 2007 1:58 AM by tvsmetanina

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# layout &raquo; ???????????????? ???????????? ContentType ?????? Page Layout

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker