Pergunta

Eu tenho um costume página-biblioteca que um costume tipo de conteúdo e de layout de página tudo dentro de um site de definição.

funciona como esperado. A única coisa que não posso dar a volta é que se eu atualizar a solução com a página-lib, ctype, de layout de página via stsadm tudo é atualizado, exceto o de layout de página.

novos campos na ctype -> nenhum problema visualizações mudou na página-lib -> não há problema

Atualizado PageLayout -> ERRO

A seção de layout de página:

<!-- 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>

A seção relevante no 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>

O estranho é que, se eu só tenho um layout de página com nenhuma página-biblioteca subjacente posso atualizar a página-ayout. O problema só ocorre se eu usar um costume de layout de página dentro de uma página personalizada-biblioteca.

Eu fiz alguma pesquisa no Google e encontrou uma dica - o problema pode ser que o layout de página é unghosted. Eu verifiquei isso com um pequeno código de exemplo:

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

Depois de executar o código do layout de página é atualizada e usa o novo layout de página.

O problema é que esta não é uma solução real para mim porque eu tenho aprox. 1000 site-coleções usando o site-def. e de layout de página. Atualizando todos eles é muito doloroso. Alguém sabe uma solução para isso?

Foi útil?

Solução

Gostaria de comentar sobre uma coisa. Looks como IgnoreIfAlreadyExists = "true" não está a funcionar correctamente se referem a este ligação , pode ser revertendo o valor para FALSE deve ajudar.

<File Url="CustomPage.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" >
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top