2007年4月28日,星期六

部署母版页和页面布局为一项功能

这是我的系列文章中的第四篇,该系列文章如何创建常见的SharePoint网站工件作为功能。上次我们考虑将内容类型部署为功能。

既然已经有了内容类型和已部署的所有支持工件,那么我们就可以集中精力部署对网站的工作产生真正影响的事物-主页和页面布局。我还将在即将发布的文章中介绍Web部件的部署。

基本前提是:

  • 使用SharePoint Designer(SPD)开发母版页/布局
  • 将每个文件保存到文件系统(而不是母版页库),准备添加到功能中。不幸的是,SPD在执行此操作时实际上会弄乱超链接和一些控件引用-特别是使用'〜/ _controltemplates /'路径对用户控件的引用。最好的解决方案是将最终文件的内容复制到记事本中,并将文件保存到同名文件系统中。
  • 创建功能的feature.xml和元素清单文件。文章结尾显示了一个元素清单文件的示例,该文件可部署2个母版页和3个页面布局。

让我们来谈谈下面示例中使用的值。在模块级别(要部署到SharePoint中特定位置的文件集合),我们指定URL以及文件应仅部署到根网站还是网站集中的所有网站。在文件级别,母版页的属性非常简单:

  • 'IgnoreIfAlreadyExists'-如果我们要覆盖此名称的现有文件,则应为true,否则为false。
  • 对于在文档库中存在的文件,例如在SharePoint发布站点中存在的页面,样式库或母版页库库,“类型”-应为“ GhostableInLibrary”。

对于页面布局,情况稍微复杂一些。在这里,我们需要指定以下内容:
  • “ ContentType”-指定文件是页面布局还是母版页。使用值'$ Resources:cmscore,contenttype_pagelayout_name;'以指定表示页面布局选项的SharePoint内部字符串。
  • 'PublishingPreviewImage'-创建页面时在列表框中选择此布局时要显示的URL可访问图像文件的路径。
  • 'PublishingAssociatedContentType'-在这里我们指定布局应与哪种内容类型相关联。这意味着布局将自动具有此绑定并且可以使用。 请注意,如果忽略此值,则默认情况下,您的布局将与发布功能中的基本“页面”内容类型相关联。这意味着您添加的任何自定义列将不可用。此属性的值应采用';#形式<Content type name>;#<Content type ID;#>。所以一个真实的例子是'; #Welcome Page;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF390064DEA0F50FC8C147B0B6EA0636C4A7D4;#'。


以这种方式将文件部署到SharePoint的另一个有趣方面是,不可能(AFAIK)通过单独的功能“ B”更新从功能“ A”部署的文件。这很有意义,但是如果您要使用功能更新公用文件(例如itemStyle.xsl(由Content Query Web部件使用)),则会遇到麻烦。由于该文件最初是由PublishingResources功能而不是您的自定义功能配置的,因此无法使用。

我还看到了更新页面布局的问题,这些页面布局与通过UI而非功能创建的内容类型相关联。

因此,既然我们已经部署了列表,站点列,内容类型和母版页/页面布局,就可以使用布局创建页面并将内容添加到站点。

下次,我将讨论有关部署Web部件的选项。

这是前面提到的XML示例:

<?xml version="1.0" encoding="utf-8"?>
<elements xmlns="http://schemas.microsoft.com/sharepoint/">
<module name="MasterPagesModule" url="_catalogs/masterpage" rootwebonly="True" path="">
<file url="cScape.master" ignoreifalreadyexists="TRUE" type="GhostableInLibrary"></file>
<file url="accessible.master" ignoreifalreadyexists="TRUE" type="GhostableInLibrary"></file>
</module>
<module name="PageLayoutsModule" url="_catalogs/masterpage" rootwebonly="True" path="">
<file url="AdvancedSearchLayout.aspx" ignoreifalreadyexists="TRUE" type="GhostableInLibrary">
<property name="ContentType" value="$Resources:cmscore,contenttype_pagelayout_name;"></property>
<property name="PublishingPreviewImage" value="~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/ArticleLinks.png, ~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/ArticleLinks.png"></property>
<property name="PublishingAssociatedContentType" value=";#Welcome Page;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF390064DEA0F50FC8C147B0B6EA0636C4A7D4;#"></property>
</file>
<file url="HelplineHomeLayout.aspx" ignoreifalreadyexists="TRUE" type="GhostableInLibrary">
<property name="ContentType" value="$Resources:cmscore,contenttype_pagelayout_name;"></property>
<property name="PublishingPreviewImage" value="~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/ArticleLinks.png, ~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/ArticleLinks.png"></property>
<property name="PublishingAssociatedContentType" value=";#RNIB Welcome;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF390064DEA0F50FC8C147B0B6EA0636C4A7D4007AC2318FCE0E474eADE554A22E4B6135;#"></property>
</file>
<file url="首页Page.aspx" ignoreifalreadyexists="TRUE" type="GhostableInLibrary">
<property name="ContentType" value="$Resources:cmscore,contenttype_pagelayout_name;"></property>
<property name="PublishingPreviewImage" value="~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/ArticleLinks.png, ~SiteCollection/_catalogs/masterpage/$Resources:core,Culture;/Preview Images/ArticleLinks.png"></property>
<property name="PublishingAssociatedContentType" value=";#RNIB Welcome;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF390064DEA0F50FC8C147B0B6EA0636C4A7D4007AC2318FCE0E474eADE554A22E4B6135;#"></property>
</file>
</elements>

75条评论:

匿名 said...

我在以下方面遇到问题。

属性名称=“ PublishingAssociatedContentType”
Value =“;#News Page;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3903;#”

当我在关联的Contnet类型下的“母版页画廊”中的共享点中的“页面布局”上使用它时,而不是看到“首页”(如默认显示“欢迎页面”)时,我看到了“丑陋的首页”字符串;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3903

任何想法为什么会这样?

谢谢你的帮助

克里斯·奥'Brien说过...

您确定值字符串中的内容类型ID是否正确(针对您的内容类型)?

当您根据布局创建页面时会发生什么?您可以从可用的布局中选择它,还是在选择框中显示“(无效的内容类型)”?

匿名 said...

此问题已解决。

有时,无论我是否停用,卸载和重置IIS,都不会安装具有更改的功能。

作为输入,它继续具有基于该功能的最新安装的属性。

你有没有经历过?有什么办法吗?我发现的唯一解决方案是创建一个全新的网站集(一点都不理想,但该功能始终是新功能)。

附带说明。如果在磁盘上进行更改,则可成为虚拟库的母版页会立即反映出来。样式库中的CSS尽管ghostableinlibrary并不关心文件是否在磁盘上。为什么是这样? ghostableinlibrary不适用于样式库吗?

克里斯·奥'Brien说过...

是的,我偶尔会遇到在功能更新时文件无法更新的问题。我认为我的问题是由于页面布局未与内容类型正确关联引起的(根据此帖子的第一条评论)。假设这可以,但是您的文件应该可以正常更新。

就GhostableInLibrary设置而言,这适用于SharePoint中任何在文档库中具有条目但在文件系统上也存在的文件。因此,这可以应用于母版页以及样式库中的文件。

我认为您看到差异的原因是由于SharePoint中文件的重影/未托管(自定义/未自定义)概念。在样式库中更改的文件已经过自定义,因此已复制到数据库中。因此,修改文件系统上的副本不会更改SharePoint中的任何内容。

通常,在文件系统上修改核心SharePoint文件时应格外小心。这可能会破坏事情,并且通常不受支持。修改数据库中的文件显然是可以的。

克里斯托弗·伯明翰说过...

以您的经验,是否可以使用force选项重新安装该功能,以便为已经在使用该功能的站点重新安装/覆盖母版页?

克里斯·奥'Brien说过...

克里斯托弗·

是的,如果仍从文件系统引用母版页(尚未自定义),它将进行处理。

我刚刚发布了更多有关此的信息-请参阅 使用功能部署SharePoint文件时的注意事项-幻影/虚假主机

HTH,

C。

托马斯·特纳说过...

克里斯,

我是站点管理员,我的主页已受父母版页面布局(主题)的影响。看起来好像有两个主题。。。主显示在顶部和侧面,而我的显示在中间。我知道,与您的帖子中的细节相比,此问题可能很简单,但是删除或断开主版面的任何帮助都将有所帮助。我们刚刚启动了SPS2007,主要人员还没有弄清楚如何修复它。

标记

克里斯·奥'Brien说过...

托马斯

可以嵌套母版页,所以也许您的开发人员已经做到了。如果您正在使用的任一母版页在页面顶部的@Master指令中都具有类似@ MasterPage =“ 一些Other.master”的值,则可能是这种情况。

否则,当您在“更改母版”设置页面(/_layouts/ChangeSiteMasterPage.aspx)上更改网站的母版时会发生什么?

托马斯·特纳说过...

克里斯,

谢谢...他星期一回来,我打算和他见面有关母版页设置。我没有访问权限,但他有访问权限。感谢您及时的回复...

标记

匿名 said...

我想知道:我正在通过功能部署内容类型,三个站点列,一个母版页和3个页面布局。页面布局与我正在部署的内容类型相关联。页面布局是否应该出现在带有新内容类型的下拉列表中,而不是放在括号中,例如Article Page,而不是仅用Page这样做呢?该文档的“编辑属性”下拉菜单中提供了新的内容类型,但对我来说,它们以正确的内容类型开始更有意义。

订单在供应过程中重要吗?使用时
PublishingAssociatedContentType属性,您应该只指定内容类型的GUID还是整个父/子GUID组合?我还有什么想念的吗?

克里斯·奥'Brien说过...

嗨,科林,

您需要确保您的PublishingAssociatedContentType元素的内容类型值的格式完全正确,否则它将退回到将页面布局与“页面”相关联的默认行为。

因此,格式应与本文“ PublishingAssociatedContentType”的项目符号中所讨论的一样。

这是您所拥有的,还是仅是内容类型ID?

匿名 said...

克里斯 -

这是我的页面布局之一的property元素:

属性名称=“ PublishingAssociatedContentType”值=“;#交易帖子;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF390016611AA92AAE4F4BA3A28A1CC4C75A3A;#”

我一直在使用该功能,包括内容类型。我想知道我是否有某个不好的价值,尽管升级和删除/读取了解决方案,SharePoint仍会记住它吗?

克里斯·奥'Brien说过...

科林

您拥有的价值看起来不错。但是,您可能是对的,因为仍然存在旧配置-不要忘记,如果内容类型在某处使用,则在升级或重新部署解决方案时不会将其删除。

可以尝试的几件事:

-您可以手动将页面布局与新的内容类型相关联(即通过用户界面)吗?您还应该基于布局创建一个页面以进行全面测试。否则,问题可能出在内容类型的标记上

-当您针对新的网站集测试部署解决方案/功能时会发生什么。这样成功吗?

匿名 said...

克里斯 -

谢谢! SharePoint中有太多东西供一个人跟踪。

我在一个干净的网站集上激活了该功能,效果很好。

我手动将页面布局与原始网站集上的新内容类型相关联,并且可以正常工作。

然后,我升级了解决方案,以确保手动更改卡住了,并且做到了。看起来我很好。

我注意到的一件事是,在部署功能之后,我必须仔细检查并将内容类型手动添加到各种页面库中。有没有一种方法可以使用xml功能将内容类型添加到现有库中,还是您需要编写自定义接收器的地方?

谢谢您的帮助!

克里斯·奥'Brien说过...

科林

没问题,很高兴听到您得到分类。

是的,可以使用功能CAML模式完成内容类型与现有列表/库之间的关联-无需使用功能接收器。奇怪的是,今天有人在另一个帖子上问了同样的问题。

您需要使用的元素是“ ContentTypeBinding”。该元素的文档位于

http://msdn2.microsoft.com/en-US/library/aa543152.aspx
.

HTH,

克里斯。

匿名 said...

好的,因此我可以使用它来使内容类型始终在创建部署了此功能的站点时始终绑定到Pages库吗?微软给出的例子不是很明确...

克里斯·奥'Brien说过...

科林

通常,您不需要将自定义内容类型与“页面”库相关联,因为默认情况下,该库已经绑定了“页面”内容类型,通常情况下,此处的项目将是“页面”内容类型 或子内容类型。因此,这些会很好。

然而,如果您要在“页面”中存储其他内容类型,则需要手动或通过功能中的“ ContentTypeBinding”元素设置绑定。

最典型地,“ ContentTypeBinding”用于将自定义内容类型(例如“ MyCompanyExpenseClaim”)绑定到自定义文档库(例如“ Expense Claims”)。

希望有道理!

克里斯。

匿名 said...

克里斯很棒的文章!

我正在添加自定义页面布局,并且希望在页面布局列表中显示一个友好的名称,因此我将以下两个属性添加到Elements xml:
File Url =“ MySearchLayout.aspx” IgnoreIfAlreadyExists =“ TRUE” Type =“ GhostableInLibrary”
属性名称=“标题”值=“自定义搜索中心”
“属性名称=” MasterPageDescription“ Value =”此页面布局包含搜索框Web部件。它具有单个标头Web部件区域。

我已经卸载了该功能并重新安装了很多次,但是无论我做什么,该页面始终在“页面布局”列表中显示为“ MySearchLayout.aspx”。并且描述永远不会出现。

我需要做什么才能使它正常工作?

提前致谢
凯文

桑德尔说过...

你好

我创建了一个自定义页面布局,并将内容类型与其关联。我使用控制台应用程序基于该布局创建了页面。后来我用一些Web部件更新了SPD中的布局页面,但是我的页面没有更新。更新布局页面后,如何更新从布局页面创建的页面。

克里斯·奥'Brien说过...

桑德尔

如果使用SPD进行更新,应该不会有任何问题。如果您将页面布局作为功能进行部署,则以后对SPD进行修改将意味着该布局已被定制(在SPD中,其旁边应显示一个蓝色的blob),因此将其存储在数据库中。但是,通过SPD进行更新仍然可以。

您确定布局已签入/批准吗?

谢谢,

克里斯。

匿名 said...

克里斯,你好

我使用此方法将带有样式表和图像的自定义母版页部署到多个网站集。所有图像和样式表都有自定义名称。

断断续续的好像SharePoint会丢失位置或失去对样式表和/或图像的访问。我说这是因为,当浏览该站点时,内容将存在,但是图像和/或所应用的样式则不在。所有内容都将折叠到一侧,并且图像丢失。我已经能够通过清除缓存并在前端重置IIS来暂时解决此问题,但它仍会继续出现。


我不确定100%是否使用功能是发生这种情况的原因,但这是唯一不同的方法。您是否知道为什么会发生这种情况?

感谢您的建议和文章,

J

克里斯·奥'Brien说过...



对不起,我还没有看到这个!我很确定不会,因为文件虽然部署为功能-也就是说,请记住,如果您不通过UI或SPD更新文件,它们仍将从文件系统而不是从文件系统加载数据库。看到我的文章 使用功能部署SharePoint文件时的注意事项-幻影/虚假主机 更多细节。

肯定是服务器端缓存引起了问题吗?

克里斯。

匿名 said...

克里斯,你好

到目前为止,他们不再遇到此问题。事实证明,自定义功能文件夹上的某些权限设置不正确。当我移动文件时,肯定已经发生了。我将它们设置为一个点,但是忘记进行更改后将其重置。

我不明白的是,如果这是一个权限问题,为什么清除缓存后问题会消失呢?我的一个朋友也试图清除缓存,但对他不起作用。但是它在问题出现的前三遍确实起作用了。我还不了解权限问题如何导致此问题,因为我认为权限问题是一致的。

两种方法都可以从features文件夹继承权限来解决问题。

谢谢你的帮助。

J

克里斯·奥'Brien说过...



其实我之前已经看过这个了,我想得更多。我猜您正在直接在“功能”目录中工作,并在其中为每个新功能创建一个子文件夹。在这种情况下,是的,权限不会自动继承。

解决此问题的一种方法是,首先在另一个位置创建Feature文件,然后将该文件夹复制到实际的12 \ Template \ Features文件夹中,以作为后续步骤。然后,这将保留权限。

同样,如果您像我一样使用解决方案包(.wsp)部署功能,则不会遇到权限问题。看到我的帖子 构建和部署SharePoint解决方案包 有关此的更多详细信息。

HTH,

克里斯。

匿名 said...

伙计们帮忙!

我已经创建了一个具有Article内容类型的页面布局,并对其进行了发布和批准。但是,当我尝试创建新页面时,列表中没有可供选择的布局。
有人可以帮忙吗?

克里斯·奥'Brien说过...

你好

页面布局是否确实与内容类型相关联?

否则,网站是否会限制使用哪些页面布局(从网站定义还是从网站设置)?

干杯,

克里斯。

匿名 said...

克里斯,你好

我已经使用这种方法将自定义母版页部署到我的站点,效果很好。

但是我有一个问题,将功能部署到新创建的网站时,母版页文件是否从/ 1033 / template / feature / myfeature /文件夹复制到SharePoint母版页库?
如果是这样,当我更新将来的母版页时,是否需要更新每个Sharepoint母版页图库中的母版页文件? (假设我的环境中有多个门户网站或顶级网站)

约翰

Chunzales说过...

本文非常有用。您也应该将其归类在“部署”下。

克里斯·奥'Brien说过...

约翰,

是的,功能要素文件中的“模块”指令将在母版页画廊中放置一个引用该文件的条目。请注意,此引用可能是``功能''文件夹下的原始文件,或者是如果随后对其进行了自定义(例如使用SharePoint Designer)的数据库中文件的副本。看到我的帖子 使用功能部署SharePoint文件时的注意事项-幻影/虚假主机 更多细节。

我通常会更多地与发布网站合作,但我认为,如果您将'RootWebOnly'值更改为false,则该文件的条目会添加到功能范围(例如网站或网站)内的每个母版页画廊中。

HTH,

克里斯。

匿名 said...

你能帮我吗!!
我正在创建具有多个页面内容“ RichHTMFields”的页面布局。我遇到的问题是,在进行测试时,我将数据输入到了页面内容之一中,并显示了所有内容(均为4)。

我已经检查以确保字段在HTML中的名称不同,并且确实如此。我尝试重新创建布局,但仍然得到相同的结果。

我不知道该怎么办,或者页面上不能有多个页面内容。

谢谢,
冯妮

克里斯·奥'Brien说过...

嗨,冯妮,

您需要确保已将页面布局绑定到的内容类型的每个内容字段都有一列。在SPD中设计页面布局时,您应该在工具箱中的“内容字段”部分下为每个字段都有一个项目。将其拖到设计图面上应导致将适当的SharePoint Web控件添加到标记中,并且将“ FieldName”属性设置为列名。这就是将控件绑定到数据的原因。

因此,您应该有4个控件,每个控件具有不同的FieldName。如果没有,我会说您没有在基础内容类型中正确定义列。

HTH,

克里斯。

匿名 said...

谢谢克里斯!我是新来的,非常感谢您的快速响应和帮助。我现在了解内容类型。

保持良好的工作。很高兴知道我可以得到答案。

再次感谢,
冯妮

匿名 said...

克里斯,
您是否知道如何从网站定义中关联母版页的预览图像,以便在转到母版选择页面时显示自定义预览图像?

谢谢
-Pritam

匿名 said...

克里斯,你好
又是我。确实只有2个具有Designers权限的用户吗?

谢谢,
冯妮

克里斯·奥'Brien说过...

嗨,冯妮,

那是我的新事物。是什么让您认为情况可能如此?

克里斯。

匿名 said...

对不起,我昨天没说清楚。 (脑死亡)

管理中心某处是否设置有两个以上的网站集管理员?现在我们只能有一个主要和次要的

我们想添加一个第三人称。

谢谢,
冯妮

克里斯·奥'Brien说过...

哎呀

不,可以从网站设置区域“ /_layouts/mngsiteadmin.aspx”中的“网站集管理员”页面添加多个网站集管理员。

据我所知,没有限制。

干杯,

克里斯。

匿名 said...

如果以这种方式添加它们,它们可以创建布局和母版页吗?

冯妮

克里斯·奥'Brien说过...

不,我认为您还需要向他们授予网络中的特定权限。我总是忘记了这一点,但是我很确定网站集管理员角色背后的意图不一定与“能够在网站上进行所有操作”相同。

C。

克里斯·奥'Brien说过...

-Pritam,

是的,您应该能够使用文件的'PublishingPreviewImage'属性元素。

HTH,

克里斯。

匿名 said...

克里斯,你好

感谢您提供的精彩日志,我在页面布局和Web部件消失时遇到了问题,我们正在使用MOSS 2007,这是第二次发生,现在主站点中也缺少Web部件,并且你可以丢下我的主意吗?

提前致谢
帕特里克·兰宁

克里斯·奥'Brien说过...

嗨,帕特里克,

我想知道,您的Web部件是直接插入页面布局还是在Web部件区域中?如果它们在区域中,请记住Web部件定义(config)不会进入页面标记,而是由Web部件框架单独处理。这意味着复制/部署页面布局不会覆盖Web部件。

可能是这样吗?

克里斯。

匿名 said...

嗨,帕特里克,克里斯,

在分解Webpart时,我也遇到了一些问题。我有一个声明了几个webpart的aspx文件。 Web部件相互连接。所有这些都在aspx-File中声明。
当我激活该功能时,aspx文件将复制到我的网站上。但是当我尝试打开页面时 一些 Webpart消失了,有些仍在页面上。
Webpart已全部安装,我可以将所有Webpart手动放置在另一个页面上。
我想知道激活该功能时会发生什么?激活功能时是否进行某些类型的验证?也许Webpart在激活时抛出异常,Sharepoint删除了它们?还是Webpart连接失败,Sharepoint删除了涉及的WebPart?

也许您对我有一些暗示?
再见
基督教

匿名 said...

克里斯-

很棒的帖子!我有一个继承自Article Page的自定义内容类型,以及一个使用我的新内容类型的自定义布局。我正在尝试在网站定义中部署所有这些功能,并在其中调用功能(网站列,内容类型,内容类型绑定)。无论出于何种原因,我的网站定义都没有使用我需要的资源来触发我的功能。我可以手动将其激活(是的,GUID是正确的:-))。
看来我做的一切正确-曾经遇到过这样的事情吗?

-约翰

匿名 said...

我的网站集文档库中有一个文档,并且由于我们的使命宣言和IT愿景,因此希望内容显示在其他网站上。

我知道几种链接到它的方法,但是我希望它显示在页面上。

我已经阅读并听说您可以将文档放在顶级站点,然后将其填充到其他站点,因此您只需要更新一个文档即可。

但是我还没有找到一种方法。我要问很多?我今天被偷走了!

谢谢
冯妮

未知说过...

克里斯,你好

我和Kevan有同样的问题,但是很遗憾,这个问题没有得到解决。我发现使用“ .aspx”作为创作用户的标题后,使用功能创建了页面布局,我只是想将其更改为友好的名称。我将属性标题作为子项添加到文件定义中。经过大量的停用/激活/卸载/安装并进行iis重置后,它仍然显示aspx标题。当我将其部署到新的网站集下时,标题确实会显示出来。您对此有什么解决方案吗?一切都变得无所适从。

谢谢前进

马塞尔

克里斯·奥'Brien说过...

约翰,

首先,很抱歉延迟回复,我一直在度假。

您是说要从定义中配置新网站时尝试自动激活功能?还是要在创建的站点上分别激活功能?如果是前者,则需要确保定义的onet.xml文件在“ WebFeatures”或“ SiteFeatures”中具有该功能的条目,或者您需要确保 将特征装订到定义 (如果定义已在使用中,这是使用的方法)。

HTH,

克里斯。

克里斯·奥'Brien说过...

冯妮

再次致歉(假日)。

如果我正确地遵循了您的说明,则可以使用项目上下文菜单中的“发送到其他位置”选项来执行所需的操作。复制的文档将保持与原始文档的链接,除非取消链接,否则它将接收更新。

HTH,

克里斯。

克里斯·奥'Brien说过...

@Marcel,

糟糕,您是对的,我还没有回答Kevan的帖子。也许这会回答两个问题。基本上,我认为您遇到的问题是该文件已经配置完毕,因此功能框架实际上会在后续激活时忽略您的“文件”指令。

您说它适用于新的网站集。如果删除文件然后重新激活功能会怎样?

HTH,

克里斯。

贝特里克说过...

我想回到9月12日克里斯汀·克里斯汀(Christian)的问题,该问题是页面布局中Web部件丢失的原因。

我们创建了一个名为MyPageLayout.aspx的Pagelayout,它具有一个RichHtml控件和一个webpart区域,其中dataview Webpart呈现了一个自定义列表视图。

基于该PageLayout,我们创建了Page1.aspx

然后我们更改了PageLaout。我们添加了另一个webpartzone和第二个webpart。也是一个呈现自定义列表的Dataview Webpart。

基于更新的PageLayout,我们创建了Page2.aspx。 Page2.aspx现在具有2个带webpart的webpartzone。

现在,Page1.aspx保持不变。第二个Webpart区域未显示。我们看不到用新的升级版Pagelayout升级Page1.aspx的可能性。

是否可以使用新升级的PageLayout升级Page1.aspx?还是我错过了PageLayouts背后的概念?

贝特里克说过...

我想回到9月12日克里斯汀·克里斯汀(Christian)的问题,该问题是页面布局中Web部件丢失的原因。

我们已经创建了一个发布门户,并更改了一个名为WelcomeLinks.aspx的现有PageLayout,因此它包括2个webpart区域,以及我们希望在每个default.aspx页面上使用的标准webpart。

当我们在站点操作菜单中创建站点时,将创建一个新的子站点。 default.aspx页面基于WelcomeLinks.aspx Pagelayout。

因此,我们期望看到2个带有标准Webpart的WebPart区域。但不是。 Web部件未显示。

当我们转到共享点设计器并打开default.aspx文件时,我们可以说与pageLayout分离并在Webpart区域中插入Web部件,然后将default.aspx文件重新附加到PageLayout。我们现在有它们。

但是我们想立即通过PageLayout拥有它们。而不是通过分离技巧。我们有100个子站点要经过。

是否可以更改PageLayout WelcomeLinks.aspx,使其包含2个带有标准webpart的webpart区域,以便子站点的每个default.aspx页面都具有它们?

为什么Webpart不显示?

匿名 said...

克里斯 -

像许多其他人一样,我在使该功能成功升级方面遇到困难;基本上,它拒绝更新正在使用的文件。

只是一时兴起,我决定在运行功能bat文件之前手动检出图库中的文档(它执行缩进/删除/添加/部署例程)。然后,文件已成功更新,尽管我必须手动输入并重新签入。

我在解决方案文件中缺少可以解决此问题的内容吗?我还没有接触过Designer的网站,所以我不认为这是未托管文件的情况。

谢谢!

匿名 said...

克里斯 -

好的,我阅读了“注意事项”文章,尽管我的自定义文件在Designer中没有显示出来,但似乎在某些时候已取消托管。除了看不到更改之外,还有另一种方法可以判断文件是否已取消托管吗?

实际上,在我正在使用的网站上,我从未得到未托管的图标。我只是通过签出然后签入文档进行测试,什么也没做。发布网站是否有所不同?

匿名 said...

克里斯。。。我的页面布局正确(我认为)但是,我也有3个网站模板(stp),它们是根据说(FarmA)的一组网站创建的。在我的wsp中,我安装内容类型,页面布局和母版页,然后将stp文件加载到FarmB的_catalogs / wt文件夹中。在站点模板(stp)中,有一个页面(Home.aspx)使用以下内容之一:与WSP一起安装的page_layouts。所有安装均正确(似乎),但是当我开始仔细检查时,如果您尝试在Designer中打开Home.aspx,它当然会通知您只能修改设计器中的page_layout,当我单击OK时,它会进入FarmA尝试编辑该page_layout。
因此,似乎STP会将硬编码的完整UR1保留在FarmA页面布局中,而没有相对的链接。
关于如何解决这个问题有什么想法吗?如果您看过,可以复制吗?

未知说过...

克里斯,你好

对不起,我的反应很晚。是的,我已经尝试删除该文件并重新激活该功能。由于截止日期,我跳过了“按功能提供页面布局”。这个项目完成后,我希望我有一些时间重新研究这个问题。如果我自己解决问题,您将是第一个知道。

感谢您为解决这个问题所做的所有努力。

亲切的问候,
马塞尔·西珀尔

克里斯·奥'Brien说过...

@ Collin / Deelpunt /其他在查看文件方面遇到困难的人:

我在以下文章中回复了这些评论 部署为功能的母版页/页面布局未更新.

干杯,

克里斯。

克里斯·奥'Brien说过...

@古兰加,

我没有看到我害怕。听起来好像在为站点导出收集依赖项方面并没有发生什么事情。是出版网站吗?还记得网站模板并没有真正支持发布网站吗?

HTH,

克里斯。

匿名 said...

嗨,大家好,
我正在尝试找到一种将可重用内容从一个站点拉到另一个站点的方法。你能帮我吗?

谢谢冯妮

匿名 said...

克里斯,你好

为了跟进马塞尔(Marcel)和凯文(Kevan)的问题,我们这里有同样的问题。

如果取消部署功能,删除文件并重新部署功能,则诸如标题之类的属性将在文件(如母版页或页面布局)上更新。

现在,我了解到,如果我们尝试重新激活已配置的文件,则属性不会更新。但是,这是不可行的,因为我们可能必须在稍后的时间更改这些属性,并且如果内容页面是根据这些页面布局创建的,则不能仅仅删除它们。这是一个没有覆盖标志的设计功能吗?

这给我们带来了很多麻烦,因为我们不能再删除这些文件,也不想以数据库中的那些文件结尾,因为我们必须手动进行这些更改。

预先感谢您的输入!

文森特

克里斯·奥'Brien说过...

嗨文森特,

我需要做一些更多的测试,以查看对列表项值的影响等。但是,我现在要说的一件事是记住,应该安全地通过浏览器修改列表项本身(例如标题等),这不会导致文件被自定义(并放置到数据库中),因为您没有触摸文件本身。

HTH,

克里斯。

山姆·兰登说过...

如果有可用的工具将现有Sharepoint网站中的内容类型,母版页和布局自动打包到功能中,是否有任何想法?我有一个站点,其中包含很多项目,这似乎是一个非常费力的过程,需要复制并粘贴所有页面并在xml文件中手动描述所有内容。

提前致谢。

克里斯·奥'Brien说过...

@ slangdon21,

您刚刚描述的是解决方案生成器元素 虚拟服务 打算这样做-值得一试,因为它很可能会使您顺利进行,但并不完美。

除此之外 AC有一些自定义的STSADM命令 从您的网站列和内容类型生成XML,因此您可能会发现它们很有用。

还请记住,功能不是 只要 部署工件的方法。几个因素可能会影响您的决定,但请参见
STSADM导出,内容部署,内容迁移API,功能/解决方案-比较部署选项
一些选择。

HTH,

克里斯。

山姆·兰登说过...

非常感谢克里斯的建议。我还偶然发现了SharePoint Content Deployment Wizard,它似乎可以完成任务,因为实际上我们所做的只是导出母版库的内容,而且看起来也涉及到了相关的内容类型。如果我在一家酒吧碰到你,我欠你一品脱!

克里斯·奥'Brien说过...

@ slangdon21,

是的,内容部署向导将处理您的母版页/页面布局等相关的内容类型。

希望你觉得它有用。

干杯,

克里斯。

匿名 said...

克里斯,你好
我正在使用AllUsersWebPart
默认情况下,元素清单中的标记添加一个CQWP,它会显示错误,如下所示。但是,如果我使用其他任何Web部件,都可以。

你遇到过这样的错误吗?
非常感谢您的建议。

谢谢,

------以下错误消息------


没有为此对象定义无参数构造函数。在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔noCheck,布尔&canBeCached,RuntimeMethodHandle&ctor,布尔&bNeedSecurityCheck)
在System.RuntimeType.CreateInstanceSlow ...

克里斯·奥'Brien说过...

@Mo,

抱歉,怕我没有看到此错误。反序列化需要无参数的构造函数,我可以相信这是在从功能部件添加Web部件的过程中发生的。

但是我不知道为什么您会在CQWP中看到这一点-过去我确实做到了没有问题。我已经上传了包含我使用的设置的Elements文件,因此您可以将其与您的设置进行比较-请参阅 http://sharepointchris.googlepages.com/Module.xml.

HTH,

克里斯。

竿说过...

克里斯你好

您能为我们上传这份工作的样本吗

问候

鲁道夫

克里斯·奥'Brien说过...

您好Rodolfo,

关键是上面显示的XML。您到底在找什么?

谢谢,

克里斯。

Neamat said...

克里斯你好,

我希望你能帮助我,因为我'一直在尝试提供包含其图像和CSS样式的母版页,'我已经尝试了三个星期,但我仍然可以'除了在测试机器上之外,不要让它工作。我最终关注了您的帖子,'激活功能后出现此错误"403 Forbidden"尽管成功完成了激活,但仍然可以在网站上找到该文件。当我停用该功能并使用激活后已上载的文件时,一切正常,但是一旦执行IISRESET,无论什么原因,我都会丢失应用于母版页的所有CSS,并且还会丢失图像!

请帮助。如果您需要更多信息,请也让我知道。

Neamat said...

这又是我..我能够弄清楚我猜的问题:)。问题与功能文件夹的权限有关。我继承了文件夹权限,并且可以正常工作。我希望这不是像以前那样的临时工作,但是我尝试执行IISReset并在此之后工作并清理了缓存以确保它'的工作,它做到了。所以,如果发生任何其他事情,我想我'我会给你留言:)。谢谢

克里斯·奥'Brien说过...

@Neamat,

很高兴听到您排序成功!

克里斯。

丹·布莱克说过...

您忘记了第二个关闭标签"Module" element!

克里斯·奥'Brien说过...

糟糕,谢谢Dan!

谢琳·昆西(Shereen Qumsieh)说过...

克里斯,你好

非常有用的帖子,我'我一直在浏览您的xml文件,但是我可以'似乎不了解您将如何在页面布局中添加文档库或链接列表,因此,只要用户使用该页面布局,这些Web部件就会默认显示?我可以添加自己的自定义Web部件,甚至可以添加开箱即用的Web部件(例如图像Web部件),但是我可以'我不确定如何从列表中添加任何Web部件& Libraries section.

这就是为什么您通过查询Web部件使用内容吗?这是将内容添加到页面的唯一方法吗?

克里斯·奥'Brien说过...

@Shereen,

通常的方法是使用 AllUsersWebPart 元素,用于在基于布局创建页面时置备所需的Web部件。一般而言,内容必须是模板的一部分(母版页/页面布局),或者是网页上的Web部件或字段。

希望能有所帮助,

克里斯。