将网页添加到空白共享点站点定义
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 站点定义