我正在开发一个拥有许多子网站的sharepoint 2010发布网站 . 我已经设置了自定义母版页和几个自定义页面布局 .
我已经发现如何在子网站中设置用于新创建页面的默认页面布局(在/_Layouts/AreaTemplateSettings.aspx中找到),但我似乎无法弄清楚如何指定用于创建的默认页面布局〜 /Pages/default.aspx当我创建一个新的子网站时 .
现在它选择了WelcomeLinks.aspx,这不是我想要的 .
这是否仅在我通过代码部署自定义母版页/布局时才可用,如果是,那么有没有人有任何好的例子?
谢谢 .
4 回答
您不需要部署自定义页面布局,但确实需要使用代码 . 我们解决这个问题的方法是为WebProvisioned事件创建一个事件接收器,该事件将在创建新的SPWeb后触发 .
您可以做的是使用所需的页面布局更新新Web中的PublishingPage . 这允许用户创建新的Web,但您可以设置每个新Web的默认页面布局 .
这是事件接收者代码:
这是注册事件接收器的代码(这可以在您的功能被激活时运行,也可以从PowerShell脚本或控制台应用程序运行一次):
新创建的子网站的页面布局由网站定义确定 . 例如,如果使用带有工作流模板的发布站点创建子站点,则使用14 \ TEMPLATE \ SiteTemplates \ BLANKINTERNET \ XML \ onet.xml中的配置ID =“2”创建该站点 . 在该配置中是一个指向SubWebWelcome的模块部分:
如您所见,SubWebWelcome使用WelcomeLinks页面布局设置default.aspx .
如果您希望默认页面使用不同的页面布局,则有两个选项:
基于使用所需页面布局的BLANKINTERNET创建自定义网站定义 .
继续使用开箱即用的网站定义,使用自定义代码(由功能装订或事件接收器启动),从WelcomeLinks更改页面布局 .
如果在站点上启用了发布功能,则应该如下所示:
网站设置,外观,欢迎页面和选择页面
似乎当您将发布子网站添加到SharePoint时,它似乎不会继承父网站默认页面布局 . 更重要的是,即使你调用
SetDefaultPageLayout
传递true来重置所有子站点,这个设置仍然不会坚持 .在构建我的整个站点结构(子网站)之后,我必须实现以下递归函数,以确保继承最顶层的默认页面布局,希望这有助于某人 .