SharePoint> Пользовательская страница-библиотека и PageLayout - PullRequest
1 голос
/ 29 июля 2009

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

Работает как положено. Единственное, что я не могу обойти, это то, что если я обновлю решение с помощью page-lib, ctype, page-layout через stsadm, все обновится, кроме макета страницы.

Новые поля в ctype -> нет проблем Изменены представления на странице-lib -> без проблем

Обновлен PageLayout -> ОШИБКА

Раздел макета страницы:

<!-- specific page-layout to display LKW data -->
    <File Url="CustomPage.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" >
      <Property Name="Title" Value="$Resources:CustomLayouts,Title;" />
      <Property Name="MasterPageDescription"
                Value="$Resources:cmscore,PageLayout_BlankWebPartPage_Description;" />
      <Property Name="ContentType"
                Value="$Resources:cmscore,contenttype_pagelayout_name;" />
      <Property Name="PublishingPreviewImage"
                Value="~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/BlankWebPartPage.png, ~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/BlankWebPartPage.png" />
      <Property Name="PublishingAssociatedContentType"
                Value=";#$Resources:FieldsCTypes,cTypeDisplayName;;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900D38AAFB8072F441984BC947D49503947;#" />
    </File>

Соответствующий раздел в файле onet.xml:

<Module Name="Home" Url="$Resources:cmscore,List_Pages_UrlName;Custom" Path="">
      <File Url="Default.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE">
        <Property Name="Title"
                  Value="$Resources:Layouts,DisplayName;" />
        <Property Name="ContentType"
                  Value="$Resources:cmscore,contenttype_welcomepage_name;"/>
        <Property Name="PublishingPageLayout"
                  Value="~SiteCollection/_catalogs/masterpage/CustomPage.aspx, $Resources:PalfingerPlatformsOrderRoot,LKWpageDefaultTitle;" />
        <Property Name="PublishingPageContent"
                  Value="" />
      </File>
    </Module>

Странно то, что если у меня просто есть макет страницы без базовой библиотеки страниц, я могу обновить страницу. Проблема возникает, только если я использую пользовательский макет страницы внутри пользовательской библиотеки страниц.

Я провел поиск в Google и обнаружил подсказку - проблема может заключаться в том, что макет страницы не виден. Я проверил это с помощью небольшого примера кода:

SPFile file = folder.Files["Default.aspx"];
 if (file.CustomizedPageStatus == SPCustomizedPageStatus.Customized)
 {
   file.RevertContentStream();
 }

После выполнения кода макет страницы обновляется и использует новый макет страницы.

Проблема в том, что это не настоящее решение для меня, потому что у меня есть ок. 1000 семейств сайтов, использующих site-def. и макет страницы. Обновлять их все довольно больно. Кто-нибудь знает решение для этого?

1 Ответ

1 голос
/ 29 июля 2009

Я хотел бы прокомментировать одну вещь. Похоже, IgnoreIfAlreadyExists = "TRUE" не работает должным образом, обратитесь к этой ссылке , возможно, возвращение значения в FALSE должно помочь.

<File Url="CustomPage.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" >
...