Sitecore 7基于树结构动态添加子布局

Sitecore 7基于树结构动态添加子布局,sitecore,sitecore7,Sitecore,Sitecore7,基于单个页面视图,我希望我的内容结构能够动态构建页面 例如:对于GALLERY模板的子项,它本身将具有使用GALLERY项目模板的子项,该模板定义了要在旋转木马中显示的每个图像;因此,编辑器可以简单地添加多个项目,旋转木马将相应地缩放,而不是有固定的字段(横幅、横幅2等) 目前,我在理解如何将定义库HTML的子布局自动包含在此主页中(如果存在该模板)时遇到了一个问题 与其让编辑器手动添加子布局并向gallery节点定义datasouce,我希望主页沿着树进行迭代,并观察gallery有一个模板,

基于单个页面视图,我希望我的内容结构能够动态构建页面

例如:对于GALLERY模板的子项,它本身将具有使用GALLERY项目模板的子项,该模板定义了要在旋转木马中显示的每个图像;因此,编辑器可以简单地添加多个项目,旋转木马将相应地缩放,而不是有固定的字段(横幅、横幅2等)

目前,我在理解如何将定义库HTML的子布局自动包含在此主页中(如果存在该模板)时遇到了一个问题

与其让编辑器手动添加子布局并向gallery节点定义datasouce,我希望主页沿着树进行迭代,并观察gallery有一个模板,因此知道它需要使用子布局并将其添加到主页占位符

根据这一原则,页面将根据编辑器添加到页面中的项目自行构建

任何建议或示例代码(使用webforms)都将不胜感激;目前,我不得不手动添加子布局,这似乎不是内容编辑器组装页面的直观方式


谢谢

如果您正确使用和配置页面/体验编辑器,添加子布局和数据源是一个非常直观的过程,并允许您充分利用Sitecore的所有功能和功能,特别是个性化和a/B测试这是建议您遵循的做法。

这就是说,如果您确实有一些情有可原的情况阻止您这样做,那么有一种更老的技术叫做“”,它从通过内容树关联的项目中提取渲染。在Sitecore 6.4中出现“统一页面编辑器”和数据源向导之前,它很有用,但最简单的是放置在页面上的sublayout/web控件

以下代码尚未由be on Sitecore 7测试:

公共部分类库:System.Web.UI.UserControl
{
受保护的无效页面加载(对象发送方、事件参数e)
{
PageItem page=Sitecore.Context.Item;
//自定义项包含查找要包含的项的逻辑
foreach(第页GalleryItems中的项目GalleryItems)
{
字符串strDataSource=galleryItem.ID.ToString();
RenderingReference[]渲染=
galleryItem.Visualization.GetRenderings(Sitecore.Context.Device,false);
foreach(渲染中的渲染参考渲染)
{
rendering.Settings.DataSource=strDataSource;
this.Controls.Add(
rendering.RenderingItem.GetControl(rendering.Settings));
}
}
}
}

但实际上,您应该正确地实现页面编辑器。

谢谢您的建议;页面编辑器在过去对我们来说是不可靠的-它将呈现的javascript从DOM保存到字段中,编辑可以很容易地通过意外地拖动项目来破坏页面,而且并不总是稳定的。编辑更喜欢使用内容编辑器,因为他们只想编辑内容,而不关心布局决策和界面问题-因此,一种基于模板和内容类型自动构建页面的方法。我们在SC7上,所以可能界面已经改进了,但有时候编辑只是想编辑内容,而不是设计网站布局。再次感谢您必须非常清楚这样一个事实,即通过采用这种方法,您将排除使用个性化和A/B测试。不可避免地,你的用户会回来想要使用这些,并问他们为什么不能(多次看到)。