質問

サイトがWSPでプロビジョニングされた後、いくつかのWebパーツを作成します。機能アクションでWPをゼロから作成できます。または、ギャラリーにWPのセットを保存し、必要に応じてインスタンスを作成します。サイトテンプレート用のWSPは、これらのWPが移動するリストとライブラリも作成します。私が理にかなっていることを願っています。サイトが規定であるときにWPを作成するための私の最良のオプションは何ですか。プロビジョニングサイトの最後にWPを作成するためにいくつかのコードを追加する必要があるので、すべてのリストが作成されたことを確認します。提案してください。

役に立ちましたか?

解決

OK、この環境があると考えてください:

  1. 農場レベルのWSPファイルがあります(これはこの状況でもサンドボックス化される可能性がありますが、明確にするために、それが農場のものだと考えてみましょう)。
  2. このWSPには、いくつかのリストとライブラリの定義/インスタンス、およびいくつかの視覚的なWebパートが含まれています。
  3. また、WSPファイルには、少なくとも1つの機能が含まれています。
  4. このWSPは農場に追加され、指定されたサイト収集に配備され、そこで機能がアクティブになります。そのため、リストとライブラリが作成され、Webパートがギャラリーに追加されます。
  5. これがすべて完了した後、「default.aspx」サイトページでWebパート「WebPart1」をインスタンス化します。

この時点から、私たちの目標を達成するために、機能レシーバーにいくつかのコードを(featureactivatedに)追加することができます。このコードは次のようになります:

// prepare the webpart
var webPart = new WebPart1();
// ...here you can initialize some webpart properties, if needed

// fetch SPFile object for default.aspx page
SPFile page = web.RootFolder.Files["default.aspx"];
if (page.Exists)
{
   // ...here you probably need to check out the page if it is a publishing site

   // get LimitedWebPartManager object for the page
   var webPartManager = page.GetLimitedWebPartManager(PersonalizationScope.Shared);
   // add our webpart into the 'Main' webpart zone, using zone index = 1
   webPartManager.AddWebPart(webpart, "Main", 1);

   // ...do not forget to commit your changes here if you are using publishing site

   // save our changes
   page.Update();
}

MSDN参照:

  1. splimitedwebpartmanager
  2. splimitedwebpartmanager.addwebpart
  3. 方法:ページでWebパーツを使用する
ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top