在onet.xml中包含MasterUrl时,WSS 3.0站点定义会中断

时间:2010-01-15 13:42:58

标签: sharepoint master-pages site-definition

我为WSS 3.0创建了一个使用功能的简单网站定义,此功能将主页面设置到母版库中。

这非常正常,一旦我从定义中创建了一个网站,我就可以进入母版库并查看我的配置文件。

但是,如果我在onet.xml的Configuration节点中设置MasterUrl然后从中创建一个新站点,则会失败。单击“创建”后,它会自动将我重定向到新站点,但会向我显示“找不到文件”错误。所以我输入设置页面的网址,然后点击查看母版库,然后再次找到一个文件未找到错误。

我不确定发生了什么,但在我看来,设置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/">
  <!-- _locID@Title="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>

1 个答案:

答案 0 :(得分:2)

我的第一个想法是:为什么在onet.xml中?

我通常使用名为功能装订的过程来执行此操作。以后无法删除/禁用从网站定义创建的功能(当然,您可以手动执行,或者使用功能+接收器删除对于从onet.xml创建的特定网站不需要的列表,但是你可能得到了重点)。

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

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

现在实际回答您的问题:使用网站定义时,母版页可能尚未提供,在激活任何功能之前处理onet.xml

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

如果网站是常规网站,您可以做两件事:

  • 通过将onet.xml从您的母版页功能移至<Module>,更多信息here(图1),从onet.xml部署母版页。
  • 不要在onet中设置母版网址,而是使用功能+ featurereceiver设置母版网址,更多信息here(文章中的可下载代码)。