在WSS SDK中有一篇文章介绍了使用Modules添加文件到网站定义中(可以在http://msdn.microsoft.com中搜索Using Modules to Add Files to a Site Difinition找到),不过很多东西只是稍微提了一下,具体怎么操作并没有讲到。
一般的,我们可以用下面的方法使用Module,
- 修改默认的Module
在STS网站定义中的ONET.XML中有一个默认的Default Module:<Modules>
然后在下面的 <Modules/Module Name="Default">中有<File>子元素。我们可以按照它的格式添加新的File元素即可。如:
<Module Name="Default" />
</Modules><File Url="mslst.aspx">
<AllUsersWebPart WebPartOrder="1" WebPartZoneID="Body">
<![CDATA[
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
<Assembly>AssemblyName, Version=Version, Culture=neutral,PublicKeyToken=PublicKeyToken</Assembly>
其中, <AllUsersWebPart>就是用来指定页面上WebPartZone中的Web部件的。当然,如果不需要指定Web部件的话,就不需要使用<AllUsersWebPart>了。
<TypeName>TypeName</TypeName>
<Description></Description>
<FrameType>None</FrameType>
</WebPart>
]]>
</AllUsersWebPart>
</File>
另外需要注意的是,上面示例代码中的<File>元素的Url属性值指定的是网站定义中此文件的路径,也是需要在网站中访问此文件的路径自定义Module。由于<Module Name="Default">的Path属性的值为空,因此,此文件(mslst.aspx)的路径应该也在网站定义的根路径下,和default.aspx在同一个目录。 - 使用默认的Module不能添加子目录(至少我还没有试出来。不知道哪位高手有这方面的经验),这是不太方便的。如果需要添加子目录的话,可以照下面的方法做:
- 新建一个Module
添加一个Module可以在ONET.XMl中的Project/Configurations/Configuration/Modules下新建一个Module子元素,如:<Modules>
<Module Name="Default" />
<Module Name="NewMd" />
</Modules> - 更改此Module的属性然后需要相应的在 Project/Modules元素下新建一个Module元素,其中: Path属性指定此Module对应的文件夹的相对路径(相对与此ONET.XMl),Url属性指定在网页中访问此网站的路径。另外还有一个 RootWebOnly 属性指定此Module是否只有在根网站才有。如:
<Module Name="NewWd" Url="_New" Path="New/">
<Module /> - 添加文件然后就是象上面一样,在这个Module元素下添加File元素了。
- 新建一个Module
使用上面介绍的方法可以帮助我们定义自己的网站定义。