1

機能を使用するWSS3.0の簡単なサイト定義を作成しました。この機能は、マスターページをマスターページギャラリーにプロビジョニングします。

これは完全に正常に機能します。定義からサイトを作成したら、マスターページギャラリーに移動して、プロビジョニングされたファイルを表示できます。

ただし、onet.xmlの構成ノードでMasterUrlを設定し、そこから新しいサイトを作成すると、失敗します。[作成]をクリックすると、新しいサイトに自動的にリダイレクトされますが、ファイルが見つかりませんというエラーが表示されます。そこで、設定ページへのURLを入力し、クリックしてマスターページギャラリーを表示すると、ファイルが見つかりませんというエラーが再度表示されます。

何が起こっているのかわかりませんが、MasterUrlを設定すると、機能がマスターページをプロビジョニングできる正しいリストが作成されないように見えます。誰かが私のためにこの問題に光を当てることができますか?

webtemp*.xmlは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<Templates>
  <Template Name="MasterPageTest" ID="10902">
  <Configuration ID="0"
                 Title="MasterPageTest"
                 Description="Testing master page deployment"
                 Hidden="FALSE"
                 ImageUrl="/_layouts/images/stsprev.png"
                 DisplayCategory="Test"
                 />
  </Template>
</Templates>

そして、onet.xml(masterurl属性が削除されたもの):

<?xml version="1.0"?>
<Project Title="MasterPageTest" Revision="3" ListDir="$Resources:core,lists_Folder;" xmlns:ows="Microsoft SharePoint" xmlns="http://schemas.microsoft.com/sharepoint/">
  <!-- _locID@Title="camlidonet1" _locComment="{StringCategory=HTX}" -->
  <NavBars>
  </NavBars>
  <ListTemplates>
  </ListTemplates>
  <DocumentTemplates>
  </DocumentTemplates>
  <Configurations>
    <Configuration ID="0"
                   Description="Testing master page deployment"
                   Title="Master Page Test"
                   Name="MasterPageTest"
                   >
      <!-- MasterUrl="_catalogs/masterpage/MasterPage.master" -->
      <Lists>
      </Lists>
      <Modules>
      </Modules>
      <SiteFeatures>
      </SiteFeatures>
      <WebFeatures>
        <!-- Masterpage -->
        <Feature ID="8175B375-38F5-44E2-950A-9600D5427E17"/>
      </WebFeatures>
    </Configuration>
  </Configurations>
  <Modules>
  </Modules>
  <ServerEmailFooter>$Resources:ServerEmailFooter;</ServerEmailFooter>
</Project>
4

1 に答える 1

2

私の最初の考えは、なぜonet.xmlにあるのですか?

私は通常、フィーチャー ステープルと呼ばれるプロセスを使用してこれを行います。後でサイト定義から作成された機能を削除/無効にすることはできません (もちろん、手動で行うことも、機能 + 受信者を削除して、onet.xml から作成された特定のサイトに不要なリストを削除することもできますが、あなたはおそらくポイントを得る)。

フィーチャー ステープルを使用することで、(あなたの) サイト定義はクリーンなままであり、本来あるべきもの、つまりサイトの作成時に選択できるサイトの定義のままです。私見、それは空のコンテナに過ぎないはずです。

Feature Stapling は、サイトが (カスタム) siteTEMPLATE に作成されたときにアクティブにする機能をバインドします。これを使用して、すぐに使用できるサイト定義でアクティブにしたい機能をアタッチすることもできます. たとえば、"MySite" および "My Site Host" 定義で機能を有効にする方法として、機能ステープルが推奨されます。元のサイト定義は変更されませんが、機能も有効化されます!

実際にあなたの質問に答えるために:サイト定義が使用されている場合、マスターページはおそらくまだ利用できず、onet.xml機能がアクティブ化される前に処理されます。

サイトが発行サイトの場合 (発行関連の機能がサイト コレクションでアクティブ化されていることを意味します)、プロパティを使用して発行機能でマスターページを設定できChromeMasterUrlます。

サイトが通常のサイトの場合、次の 2 つのことを行うことができます。

  • from your masterpage 機能を にonet.xml移動して、からマスター ページを展開します。詳細はこちら(図 1)。<Module>onet.xml
  • onet で masterpage の URL を設定しないでください。ただし、feature + featurereceiver を使用して masterpage の URL を設定してください。詳細については、こちら(記事のダウンロード可能なコード) を参照してください。
于 2010-01-15T16:07:17.820 に答える