どのようにSharePoint 2010のサイトテンプレートを見つける/を参照してくださいするには?
-
18-09-2019 - |
質問
私は、それ自体が、基本的なチームサイトテンプレートから作成された基本的なサイトからサイトテンプレートを作成しました。今、私はそれがグローバルテンプレートのような役割を果たして、それが作成されたウェブの外に、そのサイトのテンプレートを使用したいと思います。
たとえば、私は、get-spwebtemplateで示されるテンプレートのリストに表示されたり、試験システムに「STP」ファイルをコピーして、バンドルされたテンプレートを使用して、そこに新しいサイトを作成するために、私の新しいテンプレートをしたいと思います。
ということは可能ですか?可能でない場合は、SharePointの-正しい方法は何ですか?
(使用してSharePoint 2010のサーバーRC)
ありがとう!
解決
私は今これを行う方法を知っていると信じています。誰もがこれを行うには「正しい」方法で重量を量るために、このプロセスは少し奇妙なようですので、私は、感謝されます。
UIを使用して、サイトコレクション内の在庫のテンプレートを使用してWebを作成し、それに作品を追加し、あなたがしたくないものを削除することによって、それをカスタマイズすることができます。その後、ウェブで「サイトの設定」とあなたは、ファイル名、フレンドリ名、説明テキストを割り当てることができますし、「テンプレートとして保存サイト」、あなたが管理者として、テンプレートとして使用することを選択し、選択。これを行うと明らかにデータベースに結果のテンプレートを配置し、サイトの設定]ページでも「ソリューション」リストに住んでいるの参照を作成します。 (あなたは「Solutionsのリストを訪れる場合は、テンプレートをクリックし、有用である別のサイトにアップロードすることができ、ローカルファイルとして保存することができます)。
合理的に、あなたがこのようになり、サイトのWebコレクションに新しいウェブを追加することで、コードでサイトを作成できることはよく知られています:
SPWeb newWeb = subSite.Webs.Add(
"pathtoweb",
"Title of New Web",
"Web Description",
1033,
template,
false, false);
ここで、「テンプレート」ここには、あなたが使用したいSPWebTemplateのインスタンスです。それは株式テンプレートの一つだ場合、あなたは通常、例えば名前によってそれらを参照することができ、「#0は、STS」などの代わりに、ここで示したテンプレート参照の。質問は:API呼び出しでそれを使用するためにカスタマイズされたテンプレートの名前を取得する方法。
に作成されたテンプレートの「名前」を見つけるために、私はこのようなPowerShellを使用
$x = get-spsite http://machine/managedpath/sitecollectionname
$x.GetWebTemplates(1033)
このサブサイト上のすべてのテンプレートをダンプし、私はコピーして、私のC#のプログラムに貼り付けるには非常に便利ではない名前の終わりに私の変更テンプレートが含まれていました。
私はあなたがおそらく.AddコールでGUIDベースの名前を使用することができ、例えば、ここではすべての順列を探索しませんでしたが、明示的であるために、これは私のために働いた配列です。
:私はこれは私がよりエレガントなものを教えてくださいmadness--されていることを聞くのが大好きです // or any of the other hundred ways to do this...
SPSite s = new SPSite("your url here");
SPWeb subSite = s.RootWeb;
// 1033 is the locale id for English
SPWebTemplateCollection wtc = s.GetWebTemplates(1033);
// use the name for the index
SPWebTemplate template =
wtc["{8925048C-DF71-guidguidguidguid}#MyTemplate"];
SPWeb newWeb = subSite.Webs.Add(
"pathtoweb",
"Title of New Web",
"Web Description",
1033,
template,
false, false);
のSharePoint!