2010-01-15 41 views
1

我已经为使用功能的WSS 3.0创建了一个简单的网站定义,此功能将主页面提供到masterpage库中。在onet.xml中包含MasterUrl时,WSS 3.0网站定义会中断

这很好,一旦我从定义中创建了一个站点,我可以进入masterpage画廊并查看我的配置文件。

但是,如果我将MasterUrl设置在onet.xml的配置节点中,然后通过它创建新的站点,则会失败。点击创建后,它会自动将我重定向到新网站,但会显示文件未找到错误。因此,我输入网址到设置页面,然后点击查看masterpage画廊,然后再次给我一个文件找不到错误。

我不确定发生了什么事,但是在我看来,设置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/"> 
    <!-- [email protected]="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> 

回答

2

我首先想到的是:为什么在ONET.XML ?

我通常使用称为功能装订的过程来执行此操作。以后不可能删除/禁用从站点定义中创建的功能(当然,您可以亲自手动,也可以使用功能+接收器删除从onet.xml创建的特定站点不需要的列表,你可能会明白这一点)。

通过使用功能装订,(您的/)网站定义保持干净并保持它的意图:网站的定义,可以在网站创建期间选择。恕我直言,它应该只是一个空容器。

功能装订功能将创建网站时激活的功能绑定到(自定义)siteTEMPLATE。您甚至可以使用它来附加您希望在开箱即用的网站定义中激活的功能。例如,功能装订是启用“MySite”和“我的网站主机”定义中功能的首选方式。原始网站定义保持不变,但您的功能也被激活!

现在实际回答你的问题:当使用网站定义时,主页面可能还不可用,在激活任何功能之前处理onet.xml

如果您的网站是发布网站(意味着在网站集中激活了发布相关功能),则可以使用ChromeMasterUrl属性在发布功能中设置母版页。

如果该网站是一个正规的网站,你可以做两件事情:

  • 通过从母版功能移动<Module>onet.xml部署从onet.xml母版页,详细信息here(图1) 。
  • 不要在onet中设置masterpage url,而是使用feature + featurereceiver来设置masterpage url,更多信息here(文章中可下载的代码)。
+0

嗨科林, 感谢您的回应。将所有内容都保存在onet.xml中是有意义的,我打算从现在开始采用功能装订方法。 但是,关于母版页,我使用了与您提供的链接类似的代码,但是无论何时将母版页设置为default.master以外的任何内容,它都会产生与onet.xml方法相同的结果。也就是说,我似乎没有获得母版页库(404访问它)。 任何想法? Matt – Matt 2010-01-18 11:14:34

+0

在玩了一段时间之后,它似乎出现了我用于测试的最小母版页的问题。从全局目录中复制默认主文件后,我能够得到这一切工作。感谢您的帮助科林。 – Matt 2010-01-18 13:10:33