質問

サイト定義内にカスタムコンテンツタイプとページレイアウトがすべて含まれるカスタムページライブラリがあります。

期待どおりに動作します。私が回避できない唯一のことは、stsadmを介してpage-lib、ctype、page-layoutを使用してソリューションをアップグレードすると、page-layoutを除くすべてが更新されることです。

ctypeの新しいフィールド->問題ない page-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();
 }

コードの実行後、ページレイアウトがアップグレードされ、新しいページレイアウトが使用されます。

問題は、これが私にとって本当の解決策ではないということです。 site-defを使用した1000個のサイトコレクション。およびページレイアウト。 それらすべてを更新するのは非常に苦痛です。誰かがこれの解決策を知っていますか?

役に立ちましたか?

解決

1つのことについてコメントしたいと思います。 IgnoreIfAlreadyExists =&quot; TRUE&quot;のように見えます。このリンクを参照すると、値が元に戻っている可能性があります。 FALSEにすると役立つはずです。

<File Url="CustomPage.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" >
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top