1

我为 WSS 3.0 创建了一个简单的站点定义,它使用了一项功能,该功能将母版页提供到母版页库中。

这工作得很好,一旦我根据定义创建了一个站点,我就可以进入母版页库并查看我的配置文件。

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

我不确定发生了什么,但在我看来,设置 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>
4

1 回答 1

2

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

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

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

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

现在实际回答您的问题:使用站点定义时,母版页可能还不可用,在onet.xml激活任何功能之前对其进行处理。

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

如果该站点是常规站点,您可以做 2 件事:

  • 通过将母版页功能从母版页onet.xml移动到 ,从<Module>此处部署母版页(图 1)。onet.xml
  • 不要在onet中设置masterpage url,而是使用feature + featurereceiver来设置masterpage url,更多信息在这里(文章中的可下载代码)。
于 2010-01-15T16:07:17.820 回答