asp.net-mvc - 从另一个项目继承 Sitecore 渲染 (MVC)

标签 asp.net-mvc sitecore sitecore8

我们网站的一部分具有深入的 IA。顶部是一个页面,该页面将在其右侧栏添加许多组件。该首页下的大多数子页面都将具有相同的右轨组件,因此我的任务是查看从该页面继承的渲染。更一般地说,我正在尝试编写一个执行以下伪代码的函数:

If using inheritance {
Get Renderings from given placeholder on an item
Add those renderings to a placeholder on the fly at run-time
} else {
  render out components as normal
}

请注意,我不想将它们保存到数据存储中,我只想将它们动态添加,因为如果有人实际上将渲染添加到当前项目,则该项目的继承将停止。或者,如果有人更改了顶部的渲染,这也应该传播给子级。

我有一些代码可以让我渲染来自给定占位符的引用(来自 Stack Overflow):

var renderingReferences = inheritFrom.Visualization.GetRenderings(Sitecore.Context.Device, true);
var renderingsInPlaceholder = renderingReferences.Where(r => r.Placeholder.EndsWith('/' + placeholder, StringComparison.OrdinalIgnoreCase));

但是,我在查找如何将 renderReference 项添加到子页面上的占位符时遇到了一些麻烦。我看过一些处理设备的代码:

var layoutField = new LayoutField(item.Fields[Sitecore.FieldIDs.LayoutField]);
var layoutDefinition = LayoutDefinition.Parse(layoutField.Value);
var deviceDefinition = layoutDefinition.GetDevice(Sitecore.Context.Device.ID.ToString());

foreach (var reference in references)
{
    var renderingDefinition = new RenderingDefinition
    {
        ItemID = reference.RenderingItem.ID.ToString(),
        Placeholder = placeHolder,
        Datasource = reference.RenderingItem.DataSource
    };

    deviceDefinition.AddRendering(renderingDefinition);
}

但这似乎不起作用...您可以提供的任何帮助将不胜感激...

最佳答案

您本质上是在寻找占位符后备,以允许您使用在父项的同一占位符中指定的组件。您可以在 Sitecore Placeholder Fallback blog post 中找到有关如何实现此目的的更多详细信息,包括所需的代码。 。

关于asp.net-mvc - 从另一个项目继承 Sitecore 渲染 (MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065758/

相关文章:

javascript - Jquery 中未解析 URL 名称

asp.net - Sitecore 没有读取/创建计数器所需的权限

indexing - 如何向 Sitecore 实现的 Solr 索引中的 _content 字段添加文本?

asp.net-mvc-5 - 使用 Glass Mapper 的 Sitecore 8 可编辑字段

c# - 如何更改服务总线队列的属性?

c# - ASP.NET mvc RenderAction 登录和注册 View

solr - Sitecore Solr 错误未定义字段标签

testing - Sitecore 网站的性能测试

asp.net-mvc - 这是 jquery ajax 调用 aspnet mvc Controller 的有效数据吗?

indexing - URL 从 nolayout.aspx 重定向到 sitecore 网站中的 404 错误页面的额外信息