私は3つのゾーンでページを作った。 onet.xmlには、3つのwebpartが定義されており、サイト作成時にページに追加されます。 onet.xml内の各webpartにidを割り当てることは可能ですか、または接続をフックするフィーチャーレシーバを記述する必要がありますか?onet.xmlにwebpart idを割り当てることはできますか?
私の最初の考えは、ページ自体に使用することでしたが、WebパーツのIDが必要です。
私は3つのゾーンでページを作った。 onet.xmlには、3つのwebpartが定義されており、サイト作成時にページに追加されます。 onet.xml内の各webpartにidを割り当てることは可能ですか、または接続をフックするフィーチャーレシーバを記述する必要がありますか?onet.xmlにwebpart idを割り当てることはできますか?
私の最初の考えは、ページ自体に使用することでしたが、WebパーツのIDが必要です。
私は2つの解決策を見つけました。 1つは、Webパーツをページレイアウトに追加することですが、ゾーンには追加しません。あなたはそれらを引っ張るためにIDを使用することができます。
しかし私が行った解決策は、最初に実行されたときにページ上の他のWebパーツすべてを接続するWebパーツの1つに「InitConnection」関数を作成することでした。
機能ステープルでも同じことができると思いますが、私が行った解決策は簡単で小さなコードでした。
<AllUsersWebPart WebPartZoneID="TopColumnZone" WebPartOrder="1"><![CDATA[
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="Microsoft.SharePoint.Publishing.WebControls.TableOfContentsWebPart,Microsoft.SharePoint.Publishing,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" />
<importErrorMessage>$Resources:cmscore,WebPartImportError;</importErrorMessage>
</metaData>
<data>
<properties>
<property name="Title" type="string">$Resources:cmscore,PublishingLayouts_TOCWebPart_Title;</property>
<property name="Description" type="string">$Resources:cmscore,PublishingLayouts_TOCWebPart_Description;</property>
<property name="ShowPages" type="bool">True</property>
<property name="IncludeContentFromStartingLocation" type="bool">False</property>
<property name="ChromeType" type="chrometype">None</property>
<property name="ChromeState" type="chromestate">Normal</property>
<property name="HelpUrl" type="string">/_layouts/help.aspx</property>
</properties>
</data>
</webPart>
</webParts>]]>
</AllUsersWebPart>
あなたは、プロパティタグで定義されている上記のスニペットのすべてのプロパティを見れば、あなたは私の推測では、それが動作するはずですが、それにIDを追加しようとしました。
<property name="ID" type="string">WebPart1</property>
これは、onet.xmlに入れたIDを、サイト作成時にg_ {random guid}に置き換えます。私はプログラム的なやり方をしなければならないか、あるいはGUI上で手動で接続する必要があると思います。 –