2009-07-29 2 views
1

사용자 지정 콘텐츠 형식 및 페이지 레이아웃이 모두 사이트 정의 내에있는 사용자 지정 페이지 라이브러리가 있습니다.SharePoint> 사용자 지정 페이지 라이브러리 및 PageLayout

예상대로 작동합니다. 내가 해결할 수없는 유일한 점은 stsadm을 통해 page-lib, ctype, page-layout으로 솔루션을 업그레이드하면 페이지 레이아웃을 제외한 모든 것이 업데이트된다는 것입니다. CTYPE에서

새로운 필드 -> 페이지-lib 디렉토리에 아무런 문제가 변경된보기 ->

이 페이지 레이아웃을 업데이트 아무 문제 -> ERROR

페이지 레이아웃 섹션 :

<!-- 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(); 
} 

를 새 페이지 레이아웃을 사용 나는 작은 샘플 코드와이를 확인했습니다.

문제는 내가 대략 가지고 있기 때문에 이것이 나를위한 진짜 해결책이 아니다. site-def를 사용하는 1000 개의 사이트 모음 및 페이지 레이아웃. 모두 업데이트하는 것은 상당히 고통 스럽습니다. 아무도 이것에 대한 해결책을 알고 있습니까?

+0

현재 "솔루션"은 기능 활성화에 대해 위 코드를 실행하는 기능 수신기입니다. 최종 해결책은 없지만 지금 당장 해결하십시오. – Henrik

답변

1

한 가지에 대해 말씀 드리고 싶습니다. IgnoreIfAlreadyExists = "TRUE"가 올바르게 작동하지 않는 것 같습니다. link을 참조하십시오. 값을 FALSE로 되 돌리면 도움이 될 수 있습니다.

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

아니요 - 불행히도 플래그가 제 경우에 도움이되지 않습니다. 솔루션 업그레이드 또는 설치 제거/설치 솔루션을 수행 한 후에도 페이지 레이아웃은 여전히 ​​업데이트되지 않습니다. – Henrik

+0

많은 소스에서 IgnoreIfAlreadyExists가 예상대로 작동하지 않으며 "유일한"해결책은 일부 사용자 정의 코드를 사용하는 것입니다. 따라서 위에서 설명한 필자의 피처 수신자 솔루션은 결국 솔루션 종류처럼 보입니다. – Henrik

관련 문제