将网页添加到空白共享点站点定义

Posted

技术标签:

【中文标题】将网页添加到空白共享点站点定义【英文标题】:Adding web page to blank sharepoint site definition 【发布时间】:2010-12-10 07:26:03 【问题描述】:

我对 Sharepoint (2007) 完全陌生,所以请多多包涵。我想在创建新站点时自动创建 aspx 页面。这些页面将通过将由母版页定义的选项卡链接到。我没有自定义站点定义,并计划将功能装订应用到开箱即用的空白站点定义。

通过我的研究,我认为您可以创建一个 Web 部件页面并将其转化为功能。然后我可以将它装订到空白站点定义。问题是我还没有找到有关如何执行此操作的任何信息。所以我的两个问题是:

    如何创建仅是一个 aspx 页面的功能? 如何将此功能装订到空白网站定义?

我发现有人在这里问同样的问题:How to add a web part page to a site definition? 我阅读了第一个回复,但它有点超出我的想象,我不知道它是否真的回答了我的问题。

非常感谢!

【问题讨论】:

【参考方案1】:

第一个问题的答案取决于您是指应用程序页面还是内容页面。它们各有优势:应用程序页面很好,因为它们可以运行自定义的服务器端代码,而内容页面很好,因为(例如)它们可以由用户自定义,但默认情况下受限于可以使用的代码类型运行。

要对这两种类型在功能和限制方面的差异进行很好的讨论,请查看 Windows SharePoint Services SDK 并查看名为“Application _layouts page type”和“Content page type”的主题。

至于装订,它比向站点定义的 onet.xml 文件中添加新功能更简单、更灵活。这个article 似乎是对替代方案的一个很好的概述。不过,您可能想复制一份空白网站定义,重命名它,然后在您的工作中使用它。

内容页面的功能

为此,您需要三种类型的东西:

    feature.xml 文件——只是引用元素清单的样板文件。 页面模板 -- 这可能是整个 aspx 页面本身,也可能是(例如)定义了 WebPartZones 但还没有实际 Web 部件的 Web 部件页面的外壳。 元素清单文件,它引用您的页面模板并定义应在激活您的功能时提供的任何 Web 部件。

您的功能的文件夹结构如下所示:

12
+-- TEMPLATES
    +-- FEATURES
        +-- YourFeature
            +-- PageTemplates
            |   +-- Page.aspx (simple aspx page)
            |   +-- WebPartPage.aspx (still simple, but with WebPartZones)
            +-- feature.xml
            +-- elements.xml

Feature.xml:

<Feature 
  Id="CFF117BC-9685-4a7b-88D0-523D9DAD21F0"
  Title="Custom Pages Feature"
  Scope="Web"
  xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementManifest Location="elements.xml"/>
  </ElementManifests>
</Feature>

Elements.xml

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Path="PageTemplates" Url="Pages" >
    <File Url="Page.aspx" Type="Ghostable" />
    <File Url="WebPartPage.aspx" Name="WebPartPage.aspx" Type="Ghostable" >
      <AllUsersWebPart WebPartZoneID="Left" WebPartOrder="0">
        <![CDATA[         
            <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2"
                     xmlns:cewp="http://schemas.microsoft.com/WebPart/v2/ContentEditor">
                <Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
                <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>
                <Title>Some content that you want to provision with the feature</Title>
                <FrameType>TitleBarOnly</FrameType>
                <cewp:Content>
                  Hello world.
                </cewp:Content>
            </WebPart>
        ]]>
      </AllUsersWebPart>
    </File>
  </Module>
</Elements>

Page.aspx

<%@ Page MasterPageFile="~masterurl/default.master" 
    meta:progid="SharePoint.WebPartPage.Document"  %>
<asp:Content runat="server" ContentPlaceHolderID="PlaceHolderMain">
  Hello World
</asp:Content>

WebPartPage.aspx

<%@ Page Language="C#" MasterPageFile="~masterurl/default.master" Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" meta:progid="SharePoint.WebPartPage.Document"   %>

<%@ Register Tagprefix="WebPartPages" 
             Namespace="Microsoft.SharePoint.WebPartPages" 
             Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<asp:Content ID="main" runat="server" ContentPlaceHolderID="PlaceHolderMain" >

<table >
  <tr>
    <td valign="top" style="width:50%">
        <WebPartPages:WebPartZone ID="Left" runat="server" 
                      FrameType="TitleBarOnly" Title="Left Web Part Zone" />
    </td>
    <td valign="top" style="width:50%">
        <WebPartPages:WebPartZone ID="Right" runat="server" 
                     FrameType="TitleBarOnly" Title="Right Web Part Zone" />        
    </td>
  </tr>
</table>

</asp:Content>

如果您以这种方式配置您的功能,您应该能够在该结构中部署网站内容页面。

另外,我强烈推荐 Ted Pattison 的 Inside Windows SharePoint Services 书。它详细介绍了这个主题,包括网站内容页面的重要安全方面。物超所值。

【讨论】:

嗨,克里斯,感谢您的回复。我想我想要一个内容页面,因为我可能想要为每个站点定制一个页面版本。您链接到的文章显示了如何将该功能装订到站点定义,但我不确定如何创建该功能。 Windows SharePoint Services 3.0 Web 部件使用 Visual Studio 2005 扩展 (msdn.microsoft.com/en-us/library/aa973249.aspx) 展示了如何使用 Visual Studio 创建 Web 部件和功能,但我应该在代码中编写什么来创建内容页面? —— 太好了!正是我想要的。所以我创建了所有文件并使用 stsadm 工具安装了该功能,但它没有显示在“网站功能”或“网站集功能”下。我读了一些关于解决方案文件的内容。这是我需要的东西吗?这似乎很难做到。 其实上面的功能确实出现了。这是订书机功能,没有 您应该能够在没有 wsp 解决方案文件的情况下执行此操作。您的功能是否位于服务器上模板/功能文件夹下的正确位置?对于解决方案文件的创建,我真的很喜欢 STSDEV。我很久以前就开始使用它了,所以现在可能有更好的工具,但值得一看。 您可能想提出另一个问题来帮助您找到订书机功能,因为它对于这个特定的功能来说非常离题。

以上是关于将网页添加到空白共享点站点定义的主要内容,如果未能解决你的问题,请参考以下文章

更改共享点站点的所有者

将 2 个简单的 aspx 页面添加到 Sharepoint 站点定义

如何使用 python 脚本将文件上传到共享点站点

我可以在一个共享点站点上使用多个母版页吗?

将数据从一个网站集获取到同一 Web 应用程序共享点 2016 中的另一个网站集

如何将 .iqy 文件作为数据源加载到 excel 中