2009-07-29 196 views
1

我有一个自定义页面库,其中的自定义内容类型和页面布局全部位于站点定义内。SharePoint>自定义页面库和页面布局

按预期工作。我唯一不能解决的问题是,如果我通过stsadm将解决方案升级到page-lib,ctype,page-layout,除了页面布局外,所有内容都会更新。

在CTYPE新领域 - >在页面的lib没有问题 更改视图 - >没问题

更新页面布局 - >错误

的页面布局部分:

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

奇怪的是,如果我只有一个没有底层页面库的页面布局,我可以更新页面ayout。 只有在自定义页面库中使用自定义页面布局时,才会出现此问题。

我做了一些谷歌搜索,发现一个提示 - 问题可能是页面布局是无人主机。 我查这一个小样本代码:

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

执行页面布局升级代码后,并使用新的页面布局。

问题是,这不是真正的解决方案,因为我有约。使用site-def的1000个站点集合。和页面布局。 更新所有这些都很痛苦。有没有人知道这个解决方案?

+0

目前我的“解决方案”是一个功能接收器,执行功能激活上面的代码。没有最终的解决方案,而是现在的解决方案。 – Henrik 2009-07-30 13:31:30

回答

1

我想评论一件事。看起来像IgnoreIfAlreadyExists =“TRUE”无法正常工作,请参阅此link,可能会将值恢复为FALSE应该有所帮助。

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

没有 - 不幸的是,国旗并没有帮助我的情况。解决方案升级或卸载/安装解决方案后,页面布局仍未更新。 – Henrik 2009-07-30 06:56:11

+0

Lot的消息称IgnoreIfAlreadyExists不能按预期工作,“唯一”解决方案是使用一些自定义代码 - 因此我上面的功能接收器解决方案毕竟看起来是一种解决方案。 – Henrik 2009-08-02 09:59:17